php エディタ Baicao は、Go 言語の必須インターフェイス ルールを紹介します。つまり、メソッドにポインター レシーバーを持つ型のみがインターフェイスの要件を満たすことができます。 Go 言語は、インターフェイスを通じてポリモーフィズムを実装する静的型付けプログラミング言語です。インターフェイスを定義するときに、メソッドのレシーバーの型 (値の型またはポインターの型) を指定できます。ただし、必須インターフェイス ルールを使用すると、メソッドにポインター レシーバーを持つ型のみがインターフェイスの要件を満たすことができます。これは、ポインター型は値の内容を変更できるが、値型は変更できないためです。このルールにより、インターフェイス メソッドが値を操作するときに予期しない動作が発生しないことが保証されます。このルールを理解することで、Go 言語でのインターフェイスの使用と設計をより深く理解できるようになります。
構造体を連結して json http リクエストに対する応答を生成する一般的な方法を見つけるために、型パラメーターを使用していくつかの実験を行っています。
構造体が実装する必要がある method
インターフェイスには、setparams
メソッドがあります。実装でポインター レシーバーが使用されている限り、これは期待どおりに機能します。
私の質問: setparams
に値レシーバーがある場合、それをコンパイル時エラーにする方法はありますか?
次の例は、値レシーバーを使用した setparams
の問題を示しています。
リーリー
コード内で次のことを行う場合:
リーリー
t の型セットには型項目として
*m しか含まれていませんが、
m には *m
のメソッド セットも含まれています。 宣言されたメソッド。コンパイラは、
このメソッド が *m のメソッド セットにどのように表示されるかを確認できません。
setparam を
badping で宣言する場合、メソッドが受信側を無駄に変更しようとしないようにするのはユーザーの責任です。
以上がGo - メソッドのポインタ レシーバを持つ型のみによってインターフェイスが満たされるように強制しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。