Go では、メソッドは型に関連付けられており、型名.メソッド名を通じて呼び出してレシーバーの値を変更できますが、関数は型に依存せず、関数名を通じて直接呼び出すことができます。メソッドと関数の違い: メソッドは型に関連しており、関数は型に依存しません。メソッドは型名.メソッド名を通じて呼び出され、関数は関数名を通じて直接呼び出されます。メソッドはレシーバーの値を変更できますが、関数は変更できません。
Go 言語では、メソッドと関数は特定のタスクを実行するために使用されるコード ブロックです。 。ただし、それらの間にはいくつかの重要な違いがあります。
メソッドは特定のタイプに関連付けられます。これらはその型の値のメンバーであるため、型名に続けてドットを使用して呼び出すことができます。
type Person struct { name string } func (p Person) Greet() { fmt.Println("Hello, my name is", p.name) }
上記の例では、Greet
は person
タイプの メソッド
であり、p.Greet( )# ##移行。
func キーワードを使用して定義され、関数名によって直接呼び出すことができます。
func Greet(name string) { fmt.Println("Hello,", name) }上記の例では、
Greet は
Greet("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) を使用すると、メソッドでレシーバーの値を変更できます。
Function
mainタイプ
Student
以上がGo言語のメソッドと関数の類似点と相違点の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。