ホームページ  >  記事  >  バックエンド開発  >  golangのメソッドの受信側がポインタである場合とそうでない場合の違いを詳しく解説

golangのメソッドの受信側がポインタである場合とそうでない場合の違いを詳しく解説

藏色散人
藏色散人転載
2021-02-16 09:13:373210ブラウズ

次のチュートリアルのコラムでは、golang のメソッドの受信側がポインターである場合とそうでない場合の違いについて詳しく説明します。困っている友人の役に立てば幸いです。

golang のメソッドのレシーバーがポインタである場合とポインタではない場合の違いgolangのメソッドの受信側がポインタである場合とそうでない場合の違いを詳しく解説

#まえがき

最近、あるウェブサイトを読んだ学生から、golang のメソッドの受信側がポインタである場合とそうでない場合の違いは何ですかと質問されたので、簡単に説明します。 golang を学んだばかりの学生を支援する方法を理解します。

その方法とは

実際、この原理を理解していれば、上記の問題は基本的に理解できます。

メソッドは実際には特別な関数であり、レシーバーは暗黙的に渡される最初のパラメータです。次に、ポインターと非ポインターの違いを確認するコードを追加しましょう。

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 メソッド セットには、すべての受信側 T

T メソッドが含まれます。

• 型 S に匿名フィールド T が含まれる場合、S メソッド セットには T メソッドが含まれます。

• 型 S に匿名フィールド
T が含まれる場合、S のメソッド セットには T 個の

T メソッドが含まれます。

• T または
T の埋め込みに関係なく、

S メソッドのセットには常に T *T メソッドが含まれます。


結論golang はシンプルで使いやすいですが、まだ多くの落とし穴があります。筆者は golang を使用する過程で多くの落とし穴に遭遇しました。これについては、ブログで説明します。後ほど。どなたでも歓迎です。一緒に話し合ってください。

以上がgolangのメソッドの受信側がポインタである場合とそうでない場合の違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。