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