Heim >Backend-Entwicklung >Golang >Wie unterscheidet man Golang-Funktionen und -Methoden?

Wie unterscheidet man Golang-Funktionen und -Methoden?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2024-04-25 15:09:02939Durchsuche

Der Unterschied zwischen Go-Funktionen und -Methoden besteht darin, dass die Funktion außerhalb des Pakets definiert wird und keinen Empfänger erhält, während die Methode innerhalb des Typs definiert ist und den Typempfänger als ersten Parameter erhält.

如何区分 golang 函数和方法?

Wie unterscheidet man Go-Funktionen und -Methoden?

Obwohl Funktionen und Methoden in der Go-Sprache ähnlich aussehen, gibt es wesentliche Unterschiede zwischen ihnen.

Funktion

  • ist außerhalb des Paketumfangs definiert und kann direkt aufgerufen werden.
  • Akzeptiert keine Typempfänger.
func Greet(name string) string {
    return "Hello, " + name + "!"
}

Methoden

  • werden innerhalb eines Typs definiert und können nur über Typinstanzen aufgerufen werden.
  • Receiver-Typ-Receiver als erster Parameter.
type Person struct {
    Name string
}

func (p Person) Greet() string {
    return "Hello, " + p.Name + "!"
}

Praktischer Fall

Der folgende Code demonstriert den Unterschied zwischen Funktionen und Methoden:

package main

import "fmt"

func main() {
    // 调用函数
    greeting1 := Greet("Alice")
    fmt.Println(greeting1) // 输出:Hello, Alice!

    // 实例化类型并调用方法
    alice := Person{Name: "Alice"}
    greeting2 := alice.Greet()
    fmt.Println(greeting2) // 输出:Hello, Alice!
}

func Greet(name string) string {
    return "Hello, " + name + "!"
}

type Person struct {
    Name string
}

func (p Person) Greet() string {
    return "Hello, " + p.Name + "!"
}

Das obige ist der detaillierte Inhalt vonWie unterscheidet man Golang-Funktionen und -Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn