Golang-Methodensatz

WBOY
Freigeben: 2023-05-09 21:32:06
Original
635 Leute haben es durchsucht

Golang ist eine einfache und leistungsstarke Programmiersprache, die einen umfangreichen Methodensatz zum Bedienen von Objekten bietet. Ein Methodensatz ist eine Sammlung von Methoden, die für einen Wert eines bestimmten Typs aufgerufen werden können.

Golangs Methodensatz besteht aus den folgenden Typen:

  1. Werttyp-Methodensatz

Der Werttyp-Methodensatz stellt die Sammlung von Methoden für alle Werte dar, die zu diesem Typ gehören. Zu den Werttypen gehören Basistypen (Int, Float, String usw.) und benutzerdefinierte Typen (Struktur, Array, Slice, Map usw.). Am Beispiel von struct werden alle Felder in der Struktur in den Werttyp-Methodensatz aufgenommen. Wenn eine Methode für eine Struktur aufgerufen wird, wird eine Kopie dieses Werts erstellt und bearbeitet.

Hier ist ein Beispiel:

type Person struct {
    Name string
    Age int
}

func (p Person) SayHello() {
    fmt.Println("Hello, my name is", p.Name, "and I am", p.Age, "years old.")
}

func main() {
    p := Person{Name: "John", Age: 30}
    p.SayHello() // 输出:Hello, my name is John and I am 30 years old.
}
Nach dem Login kopieren
  1. Methodensatz vom Zeigertyp

Der Methodensatz vom Zeigertyp stellt die Sammlung aller Methoden dar, die zu Zeigern dieses Typs gehören. Im Gegensatz zu Werttypen umfassen Zeigertypen alle Methoden, die Zeigerempfänger haben. Die Funktion des Zeigertyp-Methodensatzes besteht darin, das ursprüngliche Objekt zu bearbeiten.

Das Folgende ist ein Beispiel:

type Rect struct {
    Width int
    Height int
}

func (r *Rect) Area() int {
    return r.Width * r.Height
}

func main() {
    r := &Rect{Width: 10, Height: 5}
    fmt.Println(r.Area()) // 输出:50
}
Nach dem Login kopieren
  1. Kombination aus Werttyp- und Zeigertyp-Methodensätzen

Wenn ein Typ sowohl einen Werttyp-Methodensatz als auch einen Zeigertyp-Methodensatz hat, verfügt er über zwei verschiedene Methodensätze. Dieser Typ wird oft als Empfängertyp bezeichnet. Da dieser Typ sowohl Wert- als auch Zeigerempfänger unterstützt, kann er entweder für einen Wert oder einen Zeiger aufgerufen werden.

Hier ist ein Beispiel:

type Counter struct {
    Value int
}

func (c Counter) Increment() {
    c.Value++
}

func (c *Counter) Decrement() {
    c.Value--
}

func main() {
    c1 := Counter{Value: 0}
    c1.Increment()
    fmt.Println(c1.Value) // 输出:0

    c2 := &Counter{Value: 0}
    c2.Decrement()
    fmt.Println(c2.Value) // 输出:-1
}
Nach dem Login kopieren

Im obigen Beispiel können Sie eine Inkrementierungsmethode über einen Empfänger vom Werttyp und eine Dekrementierungsmethode über einen Empfänger vom Zeigertyp hinzufügen. Wenn die Inkrementierungsmethode für einen Wert aufgerufen wird, wird nur die Kopie der Variablen geändert, nicht die ursprüngliche Variable. Wenn die Dekrementierungsmethode für einen Zeiger aufgerufen wird, wird die ursprüngliche Variable geändert.

Insgesamt bietet der Methodensatz von Golang eine einfache, aber leistungsstarke Möglichkeit, mit Objekten umzugehen. Es macht die Durchführung von Vorgängen an Objekten einfacher und intuitiver und vermeidet effektiv die Duplizierung von Code. Für Anfänger ist es sehr wichtig, die Ideen hinter Methodensätzen zu verstehen, um die Grundprinzipien der Programmiersprache Golang besser zu verstehen.

Das obige ist der detaillierte Inhalt vonGolang-Methodensatz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!