0
は、私はそうのようなマップのキーを取得するための一般的な関数を記述しようとしていますか? B)この関数を呼び出すとき、元のマップタイプを[interface {}] interface {}にマッピングするにはどうすればよいですか?鋳造マップタイプ
は、私はそうのようなマップのキーを取得するための一般的な関数を記述しようとしていますか? B)この関数を呼び出すとき、元のマップタイプを[interface {}] interface {}にマッピングするにはどうすればよいですか?鋳造マップタイプ
既存のマップをmap[interface{}]interface{}
にキャストすることはできません。あなたは、リフレクションを利用することがあります:
func MapKeys(theMap interface{}) ([]interface{}, error) {
if theMap == nil {
return nil,errors.New("MapKeys arg is nil")
}
v := reflect.ValueOf(theMap) // v is now a reflect.Value type
if v.Kind() != reflect.Map {
return nil, errors.New("Argument is not a map")
}
var keys = make([]interface{}, v.Len(), v.Len())
for i, key := range v.MapKeys() {
keys[i] = key.Interface() // key is also a reflect.Value, key.Interface()
// converts it back into an interface
}
return keys, nil
}
私は(reflect.Value.MapKeysを認識していませんでした)。基本的なライブラリをまだ学んでいます。ありがとう! –