ホームページ > バックエンド開発 > Golang > Go の型推論が短い変数宣言の構造体フィールドで失敗するのはなぜですか?

Go の型推論が短い変数宣言の構造体フィールドで失敗するのはなぜですか?

Patricia Arquette
リリース: 2025-01-03 17:36:43
オリジナル
658 人が閲覧しました

Why Does Go's Type Inference Fail for Struct Fields in Short Variable Declarations?

構造体を使用した代入における Go の型推論の曖昧さ

次の Go コード スニペットを考えてみましょう。

i := 10
next := 11
prev, i := i, next
ログイン後にコピー

このスニペットでは、i の型は代入中に int として正常に推論されます。ただし、同様のスニペットに構造体フィールドが含まれる場合、以下に示すように型推論が失敗します。

type Foo struct {
    Bar int
}

f := Foo{10}
next := 11
prev, f.Bar := f.Bar, next
ログイン後にコピー

後者のスニペットでは、f.Bar の型推論が失敗し、「non-name」というエラー メッセージが表示されます。 f.:= の左側のバー。

この動作を説明するには、Go の関連する問題を参照します。 tracker:

Github Issue 6842

Issue 6842 (「仕様: 短い宣言表記によるフィールドへの代入」) には、この動作が未解決の問題として文書化されています。この問題は、代入の構文のあいまいさに起因します。具体的には、コンパイラは、f.Bar が式 f.Bar, next 内の変数名であるかフィールド名であるかを判断できません。

問題レポートではオープンとしてマークされていますが、後のコメントでは、f.Bar が未解決であることが示唆されています。解決されているか、他の変更によって置き換えられている可能性があります。ただし、最新の公式発表では、これは既知の問題であるとのことです。

以上がGo の型推論が短い変数宣言の構造体フィールドで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート