golang エラーの解決: マップ インデックスで 'x' (型 T) を型 U として使用できません、解決策

WBOY
リリース: 2023-08-18 16:25:49
オリジナル
1354 人が閲覧しました

解决golang报错:cannot use \'x\' (type T) as type U in map index,解决方法

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!