適用シナリオ: コード再利用における型変換と反映の適用 ユニバーサル関数: 複数の値の最大値を計算する次の関数など、複数の型を扱える関数を作成します。リフレクティブ 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 }
動的値の処理:
リフレクションを使用して、値の保存や取得などの動的な値処理を実装します。
rree以上がコード再利用における golang の型変換と反映の適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。