Q: インターフェイス{}をマップに変換し、それを反復処理する
構造体、構造体のスライス、およびマップを含むさまざまなデータ構造を受け入れることができる汎用関数を作成しようとしています。文字列キーと構造体の値を使用している場合、マップを反復処理しようとするとエラーが発生します。インターフェイスを反映すると、それが確かにマップであることがわかりますが、範囲の反復を通じてその要素にアクセスするとエラーが発生します。
A: Type Switch または Value.MapKeys を使用する
これを解決するには 2 つのアプローチがあります問題:
タイプ スイッチ:
の場合例:
switch in := in.(type) { case map[string]*Book: for key, value := range in { fmt.Printf("Key: %s, Value: %v\n", key, value) } default: // Handle other cases as needed. }
Value.MapKeys:
例:
v := reflect.ValueOf(in) keys := v.MapKeys() for _, key := range keys { value := v.MapIndex(key) fmt.Printf("Key: %v, Value: %v\n", key.Interface(), value.Interface()) }
以上がインターフェースから反映されたマップを反復処理する方法{}の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。