응용 시나리오: 코드 재사용 시 유형 변환 및 반영 적용 범용 함수: 여러 값의 최대값을 계산하는 다음 함수와 같이 여러 유형을 처리할 수 있는 함수를 만듭니다. 반사형 JSON 구문 분석: 특정 유형의 구조에 의존하지 않고 반사를 통해 JSON 데이터에 액세스합니다. 동적 값 처리: 리플렉션을 사용하여 값 저장 및 검색과 같은 동적 값 처리를 구현합니다.
Go의 코드 재사용 시 유형 변환 및 리플렉션 적용
Go에서는 다음을 포함한 다양한 유형 변환 방법을 제공합니다.
// 类型断言 val := interface{}(int)(val) // 将 interface{} 转换为 int // 类型转换 var val int = int(float) // 类型转换函数 val = strconv.Atoi(string)
Reflection을 사용하면 프로그램이 런타임에 실행될 수 있습니다. 유형과 값을 확인하고 수정합니다. 리플렉션 인터페이스는 다음 기능을 제공합니다.
// 获得类型信息 val := reflect.TypeOf(val) // 获得值信息 val := reflect.ValueOf(val) // 检查类型 val.Kind() // 返回类型种类(例如 Int, Float) // 获得字段 val.Field(i) // 获取第 i 个字段的值 // 调用方法 val.Method(i).Call(args...) // 调用第 i 个方法
유형 변환 및 리플렉션은 코드 재사용에 널리 사용됩니다. 다음은 몇 가지 실제 예입니다.
일반 함수:
여러 유형을 처리할 수 있는 일반 함수 만들기:
func Max(vals ...interface{}) interface{} { var maxVal interface{} for _, v := range vals { switch v.(type) { case int: if v.(int) > maxVal.(int) { maxVal = v } case float64: if v.(float64) > maxVal.(float64) { maxVal = v } } } return maxVal }
반사적 JSON 구문 분석:
특정 유형에 의존하지 않고 리플렉션을 통해 JSON 데이터에 액세스 구조:
type JSON map[string]interface{} func ParseJSON(data []byte) (JSON, error) { m := make(map[string]interface{}) if err := json.Unmarshal(data, &m); err != nil { return nil, err } return JSON(m), nil }
동적 값 처리:
리플렉션을 사용하여 값 저장 및 검색과 같은 동적 값 처리를 구현합니다.
아아아아위 내용은 코드 재사용 시 golang 유형 변환 및 반영 적용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!