その他のタイプ T のメソッド セットは、レシーバ タイプ のすべてのメソッドで構成されます
T
。対応するポインター型のメソッド セットは、*T
レシーバーが*T
orのすべてのメソッドのセットですT
(つまり、 のメソッド セットも含まれますT
)。
どうしてこれなの?受信するメソッドがT
設定されたメソッドに属しているのに、*T
その逆ではないのはなぜですか?
その他のタイプ T のメソッド セットは、レシーバ タイプ のすべてのメソッドで構成されます
T
。対応するポインター型のメソッド セットは、*T
レシーバーが*T
orのすべてのメソッドのセットですT
(つまり、 のメソッド セットも含まれますT
)。
どうしてこれなの?受信するメソッドがT
設定されたメソッドに属しているのに、*T
その逆ではないのはなぜですか?
よくある質問から:
インターフェイス値にポインター *T が含まれている場合、メソッド呼び出しはポインターを逆参照することによって値を取得できますが、インターフェイス値に値 T が含まれている場合、メソッド呼び出しがポインターを取得するための有用な方法はありません。
ところで、ポインター レシーバーを持つメソッドは、ポインター パラメーターを変更できるのと同じように、レシーバーを変更できます。非ポインターレシーバーをポインターレシーバーとして渡すと (これが可能であると仮定して)、メソッドはそれを変更できますが、そうすべきではありません。
型のすべてのメソッドに対して 1 つの一貫したレシーバー型を使用し、ポインターとダイレクト レシーバーを混在させないようにすることをお勧めします。また、大きな型にはポインター レシーバーを使用することをお勧めします。