Go の "メソッドのないインターフェイス" を理解する
コード内で、「typeinterface {} は no のインターフェイスです」というエラーが発生しました。メソッド」は、関数に渡された匿名構造体からフィールドにアクセスしようとするときに発生します。このエラーを理解するには、Go のインターフェイスの概念を理解することが不可欠です。
Go のインターフェイスは、具象型が実装する必要があるメソッドのセットを定義する型です。ただし、あなたの場合、使用しているインターフェイスは、インターフェイス {} で示される「空のインターフェイス」です。空のインターフェイスにはメソッドがなく、任意の型の値を保持できるため、ユニバーサル型になります。
匿名構造体フィールドにアクセスします
次のフィールドにアクセスするにはNewJob に渡される匿名構造体の場合、そのフィールドにアクセスする前に、それを互換性のある型に型アサートする必要があります。型アサーションを使用すると、空のインターフェイスを特定の具象型に変換できます。
修正されたコード
<code class="go">id := v.(struct{Id int}).Id</code>
この修正されたコードでは、 v インターフェイスを型アサートします。 ID フィールドを持つ構造体に変換します。これにより、Id フィールドにアクセスできるようになり、プログラムは期待どおりに実行されます。
型アサーションが失敗すると実行時エラーが発生する可能性があるため、型アサーションは慎重に使用する必要があることに注意してください。
以上がGo で匿名構造体にアクセスすると「メソッドのないインターフェイス」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。