ホームページ > バックエンド開発 > Golang > Go の型推論が構造体フィールドの割り当てで失敗するのはなぜですか?

Go の型推論が構造体フィールドの割り当てで失敗するのはなぜですか?

Barbara Streisand
リリース: 2024-12-28 17:29:30
オリジナル
630 人が閲覧しました

Why Does Go's Type Inference Fail for Struct Field Assignments?

Go の代入で型推論が失敗しました

Go の型推論メカニズムでは、通常、簡潔な代入ステートメントが可能です。ただし、一部の代入では期待どおりに型を推論できない場合があります。

次の例を考えてみましょう:

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

このスニペットは変数の型を正しく推論し、それに応じて変数を割り当てます。

ただし、構造体フィールドを含む同様の代入では、型推論の問題が発生する可能性があります。

type Foo struct {
    Bar int
}

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

Inこの場合、コンパイラは次のエラーを報告します:「:= の左側に名前がありません。」

この不一致の理由は、最初の例では代入の左側が変数であるためです。 name ですが、2 番目の例では構造体フィールドです。 Go の型推論エンジンでは、右側の型を推論するために左側の名前付き変数が必要です。

この問題は Go の問題 6842 として認識されています。バグではなく制限とみなされます。現在の型推論実装の。

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

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