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

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

藏色散人
リリース: 2021-02-16 09:13:37
転載
3247 人が閲覧しました

次のチュートリアルのコラムでは、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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート