Golang を使用した開発プロセス中に、「マップ インデックスのタイプ z として x (タイプ y) を使用できません」というエラー メッセージが頻繁に発生します。このエラー メッセージは通常、マップ タイプを使用するときにキー値のタイプに注意を払わなかったことが原因ですが、具体的な状況は人によって異なり、エラーの原因はより複雑である可能性があります。この記事では、このエラーのトラブルシューティングと解決方法を説明します。
まず、Golang のマップ タイプはキーと値のペア構造であることを明確にする必要があります。 Key は等価比較のみをサポートする型なしの型で、Value は任意の型にできるマップされた値です。マップ型変数を宣言するときは、その Key 型と Value 型を指定する必要があります。
次は簡単な例です:
// 使用 map 类型声明一个变量 var mp map[string]int // 给 map 变量赋值 mp = make(map[string]int) // 往 map 中添加键值对 mp["hello"] = 1000
上の例では、make
関数を使用してマップ ストレージ スペースを割り当て、それをマップ変数に追加します#キーと値のペアが ##mp に追加されました。
// 使用 map 类型声明一个变量 var mp map[string]int // 给 map 变量赋值 mp = make(map[string]int) // 如下的代码就会导致 "cannot use x (type y) as type z in map index" // 因为 Key 类型不匹配,但是没有定义成员为 int 类型的 mp["hello"] mp[100] = 1000
// 使用 map 类型声明一个变量 var mp map[string]int // 给 map 变量赋值 mp = make(map[string]int) // 如下的代码就会导致 "cannot use x (type y) as type z in map index" // 因为 Value 类型不匹配,其实际类型为 string,而不是 int mp["hello"] = "world"
// 使用 map 类型声明一个变量 var mp map[string]int // 如下的代码就会导致 "cannot use x (type y) as type z in map index" // 因为 map 变量 mp 没有被初始化,所以在给它的 Key 赋值时出错了。 mp["hello"] = 1000
make 関数を使用して初期化してください。
// 定义名为 mp 的 map 类型变量 var mp map[string]int // 定义名为 nm 的 string 类型变量 var nm string // 如下的代码就会导致 "cannot use x (type y) as type z in map index" // 因为 nm 完全不是一个 map 类型变量,所以使用其进行索引就会出现错误。 nm["hello"] = 1000
以上がgolang で「マップ インデックスのタイプ z として x (タイプ y) を使用できません」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。