map - 日本 - qgis 矢印




無効な操作を取得する:マップのインデックスを作成しようとすると、mymap["title"](タイプinterface{}はインデックス作成をサポートしていません) (2)

私は地図にあるデータを持っており、値を得るためにキーで地図にインデックスを付ける必要があります。

mdi, err := page.Metadata()
fmt.Println(mdi["title"])

しかし、私はエラーメッセージがinvalid operation: mdi["title"] (type interface {} does not support indexing)を続けていますinvalid operation: mdi["title"] (type interface {} does not support indexing) 。 私は混乱しています。なぜなら、データは地図なので、値を取得するためにインデックスにインデックスを付けることができるはずです。 型が明確でない場合は、値を文字列にキャストしようとしました。

title, ok := mdi["title"].(string)
checkOk(ok)
fmt.Println(title)

しかし、私は同じエラーメッセージを受け取りました。 私は間違って何をしていますか?


あなたのpage.Metadataは値の代わりにポインタを返します。 次のコードは、魅力のように機能します:

package main

import "fmt"

type SomeCustomType map[string]interface{}

func PageData() SomeCustomType {
    return SomeCustomType{"bar": "baz"}
}

func main() {
    fmt.Printf("%+v\n", PageData())
}

ここのデータ型がキーでした。 mdiは実際には地図ではなく、地図、文字列、intなど、何でもmdiません。 最初にキー/値の型が予想されるマップにアサートするか、 JSONとGoで説明されている厄介なcaseスイッチを実行する必要があります

mdi, err := page.Metadata()
md, ok := mdi.(map[string]interface{})
fmt.Println(md["title"])