その方法とは
実際、この原理を理解していれば、上記の問題は基本的に理解できます。
メソッドは実際には特別な関数であり、レシーバーは暗黙的に渡される最初のパラメータです。次に、ポインターと非ポインターの違いを確認するコードを追加しましょう。type test struct{ name string } func (t test) TestValue() { } func (t *test) TestPointer() { } func main(){ t := test{} m := test.TestValue m(t) m1 := (*test).TestPointer m1(&t) }
ログイン後にコピー
これらのメソッド セット間の関係は何ですか? ここでは qyuhen の golang の研究から借用しました メモを取ることに関しては、golang が好きな友人にもこの本を読むことをお勧めします。これは golang の理解を深めるのに大いに役立ちます。• タイプ T メソッド セットには、すべての受信側 T メソッドが含まれます。
• タイプ
T メソッド セットには、すべての受信側 TT メソッドが含まれます。
• 型 S に匿名フィールド T が含まれる場合、S メソッド セットには T メソッドが含まれます。• 型 S に匿名フィールド
T が含まれる場合、S のメソッド セットには T 個の
• T または
T の埋め込みに関係なく、
結論golang はシンプルで使いやすいですが、まだ多くの落とし穴があります。筆者は golang を使用する過程で多くの落とし穴に遭遇しました。これについては、ブログで説明します。後ほど。どなたでも歓迎です。一緒に話し合ってください。