golang エラーの解決策: マップ インデックスのタイプ U として「x」 (タイプ T) を使用できません。解決策
Golang プログラミングを使用すると、さまざまな問題が発生する可能性があります。エラー。その 1 つは、マップ使用時の「マップ インデックスのタイプ U として 'x' (タイプ T) を使用できません」というエラーです。このエラーはかなりわかりにくいように見えますが、その意味は実際には非常に単純です。つまり、マップのインデックスとして間違った型を使用しようとしたということです。
このエラーをよりよく理解するために、具体的な例を見てみましょう:
package main import "fmt" type Person struct { Name string Age int } func main() { m := make(map[Person]bool) p := Person{Name: "Alice", Age: 20} m[p] = true }
上の例では、タイプ「person」の構造をマップ インデックスとして使用しようとしています。ただし、マップ インデックスは比較可能なタイプでなければならないことはわかっています。構造体の型は比較できないため、コンパイラは「マップ インデックスでは 'p' (型 person) を型 person として使用できません」というエラーを報告します。
それでは、この問題をどうやって解決すればいいのでしょうか?
解決策 1: 構造体の型を同等の型に変換する
解決策の 1 つは、構造体の型を同等の型に変換することです。 golang では、文字列または整数をマップ インデックスとして使用できます。したがって、構造内のフィールドを文字列または整数に結合し、それをマップのインデックスとして使用できます。
以下はサンプル コードです:
package main import "fmt" type Person struct { Name string Age int } func main() { m := make(map[string]bool) p := Person{Name: "Alice", Age: 20} key := fmt.Sprintf("%s-%d", p.Name, p.Age) m[key] = true }
上記のコードでは、「person」構造体の Name フィールドと Age フィールドを文字列に結合し、その文字列を次のように変換します。マップのインデックス。これにより、エラー報告の問題が解決されます。
解決策 2: ポインター型をマップのインデックスとして使用する
もう 1 つの解決策は、ポインター型をマップのインデックスとして使用することです。ポインタの型を比較できるため、ポインタをマップのインデックスとして直接使用できます。
以下はサンプル コードです:
package main import "fmt" type Person struct { Name string Age int } func main() { m := make(map[*Person]bool) p := &Person{Name: "Alice", Age: 20} m[p] = true }
上記のコードでは、エラーの問題を解決できるように、マップのインデックスとしてポインター型「*person」を使用しています。
概要:
golang プログラミングを使用しているときに、間違った型を使用しようとしたため、「'x' (型 T) をマップ インデックスの型 U として使用できません」というエラーが発生しました。マップのインデックス。このエラーを解決するには 2 つの方法があります。構造体の型を同等の型に変換するか、ポインター型をマップのインデックスとして使用します。
この記事の紹介が、読者がこのエラーの問題をよりよく理解し、解決するのに役立つことを願っています。 Golang プログラミングをよりスムーズかつ効率的にしましょう。
以上がgolang エラーの解決: マップ インデックスで 'x' (型 T) を型 U として使用できません、解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。