Go言語のメソッドと関数の類似点と相違点の詳細な説明

WBOY
リリース: 2024-04-03 10:51:01
オリジナル
473 人が閲覧しました

Go では、メソッドは型に関連付けられており、型名.メソッド名を通じて呼び出してレシーバーの値を変更できますが、関数は型に依存せず、関数名を通じて直接呼び出すことができます。メソッドと関数の違い: メソッドは型に関連しており、関数は型に依存しません。メソッドは型名.メソッド名を通じて呼び出され、関数は関数名を通じて直接呼び出されます。メソッドはレシーバーの値を変更できますが、関数は変更できません。

Go言語のメソッドと関数の類似点と相違点の詳細な説明

Go 言語のメソッドと関数

背景

Go 言語では、メソッドと関数は特定のタスクを実行するために使用されるコード ブロックです。 。ただし、それらの間にはいくつかの重要な違いがあります。

メソッド

メソッドは特定のタイプに関連付けられます。これらはその型の値のメンバーであるため、型名に続けてドットを使用して呼び出すことができます。

type Person struct {
    name string
}

func (p Person) Greet() {
    fmt.Println("Hello, my name is", p.name)
}
ログイン後にコピー

上記の例では、Greetperson タイプの メソッドであり、p.Greet( )# ##移行。

Function

Function は、型に依存しないコード ブロックです。これらは

func キーワードを使用して定義され、関数名によって直接呼び出すことができます。

func Greet(name string) {
    fmt.Println("Hello,", name)
}
ログイン後にコピー

上記の例では、

GreetGreet("John") 経由で呼び出される 関数 です。ここで、 " John" がパラメータとして渡されます。

類似点と相違点

特徴メソッド関数##関連付けられたタイプ呼び出し構文アクセス受信機this実用的なケース
特定のタイプに関連する#タイプに依存しない
型名.メソッド名関数名
あなた または #**thisアクセス タイプの値を渡すことができますアクセス不可

シナリオ:

生徒の記録を管理するプログラムを作成します。

実装:

type Student struct {
    name string
    age int
}

func (s *Student) GetName() string {
    return s.name
}

func (s *Student) SetName(name string) {
    s.name = name
}

func main() {
    student := &Student{"John", 20}
    fmt.Println(student.GetName()) // 输出:"John"
    student.SetName("Jane")
    fmt.Println(student.GetName()) // 输出:"Jane"
}
ログイン後にコピー
この例では、Student 型には、学生の名前、および学生の名前を設定するための

SetName メソッド。ポインター レシーバー (*Student) を使用すると、メソッドでレシーバーの値を変更できます。 Functionmainタイプ Student

の構造体を作成し、そのメソッドを使用して学生データを管理します。

以上がGo言語のメソッドと関数の類似点と相違点の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート