「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で匿名構造体にアクセスすると「メソッドのないインターフェイス」が表示されるのはなぜですか?

Go で匿名構造体にアクセスすると「メソッドのないインターフェイス」が表示されるのはなぜですか?

2024 年 11 月 22 日に公開
ブラウズ:132

Why do I get \

Go の「メソッドのないインターフェイス」を理解する

コード内で、「type interface {} は no のインターフェイスです」というエラーが発生しました。メソッド」は、関数に渡された匿名構造体からフィールドにアクセスしようとするときに発生します。このエラーを理解するには、Go のインターフェイスの概念を理解することが不可欠です。

Go のインターフェイスは、具象型が実装する必要があるメソッドのセットを定義する型です。ただし、あなたの場合、使用しているインターフェイスは、インターフェイス {} で示される「空のインターフェイス」です。空のインターフェイスにはメソッドがなく、任意の型の値を保持できるため、ユニバーサル型になります。

匿名構造体フィールドにアクセスする

次のフィールドにアクセスするにはNewJob に渡される匿名構造体の場合、そのフィールドにアクセスする前に、それを互換性のある型に型アサートする必要があります。型アサーションを使用すると、空のインターフェイスを特定の具象型に変換できます。

修正されたコード

id := v.(struct{Id int}).Id

この修正されたコードでは、Id フィールドを持つ構造体への v インターフェイスをアサートします。これにより、Id フィールドにアクセスできるようになり、プログラムは期待どおりに実行されます。

型アサーションが失敗すると実行時エラーが発生する可能性があるため、型アサーションは慎重に使用する必要があることに注意してください。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3