マップ内にあるデータがあり、キーを使用してマップにインデックスを付けて値を取得します。
_mdi, err := page.Metadata()
fmt.Println(mdi["title"])
_
ただし、エラーメッセージinvalid operation: mdi["title"] (type interface {} does not support indexing)
が引き続き表示されます。データはマップであり、値を取得するためにデータにインデックスを付けることができるはずなので、私は混乱しています。型が明確でない場合、値を文字列にキャストしようとしました:
_title, ok := mdi["title"].(string)
checkOk(ok)
fmt.Println(title)
_
ただし、同じエラーメッセージが表示されました。私は何を間違えていますか?
ここでのデータ型がキーでした。 mdi
は実際にはマップではなく、interface{}
、これは何でも構いません-マップ、文字列、int。まず、期待されるキー/値タイプを使用してマップにアサートするか、 JSON and Go で説明されている厄介なcase
スイッチを実行する必要があります。
mdi, err := page.Metadata()
md, ok := mdi.(map[string]interface{})
fmt.Println(md["title"])