Heim > Backend-Entwicklung > Golang > Erste Schritte mit Golang-Methoden

Erste Schritte mit Golang-Methoden

WBOY
Freigeben: 2023-05-22 17:03:39
Original
457 Leute haben es durchsucht

Golang ist eine stark typisierte, statisch typisierte Programmiersprache, die sich durch hervorragende Leistung, Parallelität, Einfachheit und Sicherheit auszeichnet. Unter diesen ist die Methode ein sehr wichtiges Konzept in Golang, das es Programmierern ermöglicht, Strukturen bequemer zu bedienen. In diesem Artikel werden den Lesern Methoden in Golang vorgestellt, einschließlich Methodendefinition, Aufruf und Vererbung, damit Anfänger sich schnell mit der Verwendung von Methoden vertraut machen können.

1. Definition der Methode

Eine Methode ist eine spezielle Funktion, die einen Empfänger haben muss, bevor sie aufgerufen werden kann. Der Empfänger kann ein Strukturtyp oder ein nichtstruktureller Typ (z. B. int, float usw.) sein. Methoden können in jedem Paket definiert werden, nicht nur in dem Paket, in dem sich die Struktur befindet.

Das Definitionsformat der Methode lautet wie folgt:

func (接收器变量 接收器类型) 方法名(参数列表)(返回值列表){
    // 函数体
}
Nach dem Login kopieren

Dabei kann die Empfängervariable ein beliebiger zulässiger Variablenname sein und der Empfängertyp kann ein beliebiger Typ sein, es muss sich jedoch um einen Typ im aktuellen Paket handeln. Innerhalb einer Methode können Sie Empfängervariablen verwenden, um auf die im Empfänger enthaltenen Felder und Methoden zuzugreifen.

Es gibt zwei Arten von Empfängern:

  • Wertempfänger (Wertempfänger): Methoden, die Wertempfänger verwenden, erstellen beim Aufruf eine Kopie des Empfängers, und Änderungen am Empfänger innerhalb der Methode werden nicht widergespiegelt Originalvariable.
  • Zeigerempfänger: Methoden, die Zeigerempfänger verwenden, kopieren den Empfänger nicht und Änderungen am Empfänger innerhalb der Methode werden direkt in der Originalvariablen widergespiegelt.

Der Beispielcode lautet wie folgt:

type Rect struct{
    width, height float64
}

// 定义求面积的方法(值类型接收器)
func (r Rect) area() float64{
    return r.width * r.height
}

// 定义求面积的方法(指针类型接收器)
func (r *Rect) areaPtr() float64{
    return r.width * r.height
}
Nach dem Login kopieren

Im obigen Code definieren wir zwei Methoden zum Ermitteln der Fläche eines Rechtecks, eine verwendet einen Empfänger vom Werttyp und die andere einen Empfänger vom Zeigertyp.

2. Der Methodenaufruf

ähnelt dem Funktionsaufruf und erfordert die Verwendung eines Punktoperators. Beim Aufruf einer Methode löst Golang automatisch den Empfängertyp der Methode auf und übergibt den Empfänger, zu dem die Methode gehört, als ersten Parameter.

Der Beispielcode lautet wie folgt:

package main

import "fmt"

type Rect struct{
    width, height float64
}

// 定义求面积的方法(值类型接收器)
func (r Rect) area() float64{
    return r.width * r.height
}

// 定义求面积的方法(指针类型接收器)
func (r *Rect) areaPtr() float64{
    return r.width * r.height
}

func main(){
    rect := Rect{10, 20}

    // 调用值类型接收器的方法
    fmt.Println(rect.area())     // 输出:200

    // 调用指针类型接收器的方法
    fmt.Println(rect.areaPtr())  // 输出:200

    // 使用&符号获取指针,再调用指针类型接收器的方法
    fmt.Println((&rect).areaPtr()) // 输出:200
}
Nach dem Login kopieren

Im obigen Code erstellen wir ein Rechteck-Rect und rufen seine beiden Methoden auf.

Es ist zu beachten, dass bei Verwendung der Methode eines Werttypempfängers, wenn der Empfänger ein Werttyp einer Struktur ist, seine Feldwerte nicht geändert werden. Wenn bei Verwendung der Zeigertyp-Empfängermethode der Empfänger ein Zeigertyp einer Struktur ist, werden seine Feldwerte geändert.

3. Methodenvererbung

In Golang kann ein Typ durch Kombination anderer Typen vererbt werden. Während des Vererbungsprozesses können Methoden im Untertyp Methoden im übergeordneten Typ überschreiben, um eine eigene Logik zu implementieren.

Der Beispielcode lautet wie folgt:

package main

import "fmt"

type Shape interface{
    area() float64
}

type Rect struct{
    width, height float64
}

// 定义矩形类的方法
func (r Rect) area() float64{
    return r.width * r.height
}

type Circle struct{
    radius float64
}

// 定义圆形类的方法
func (c Circle) area() float64{
    return 3.14 * c.radius * c.radius
}

func main(){
    rect := Rect{10, 20}
    circle := Circle{10}

    // 创建形状对象,使用接口类型接收
    var shape Shape

    // 将矩形类型赋值给接口类型
    shape = rect
    fmt.Println(shape.area())   // 输出:200

    // 将圆形类型赋值给接口类型
    shape = circle
    fmt.Println(shape.area())   // 输出:314
}
Nach dem Login kopieren

Im obigen Code definieren wir eine Shape-Schnittstelle, einschließlich einer Methode zur Berechnung der Fläche. Als nächstes haben wir zwei Formtypen definiert, Rect und Circle, die jeweils die Flächenmethode in der Shape-Schnittstelle abdecken. Abschließend berechnen wir die Fläche, indem wir dem Schnittstellentyp „Shape“ die Typen „Rect“ und „Circle“ zuweisen.

Zusammenfassung:

Dieser Artikel vermittelt Kenntnisse über die Definition, den Aufruf und die Vererbung von Methoden in Golang. Durch das Studium dieses Artikels können Leser die Rolle des wichtigen Methodenkonzepts in Golang verstehen und seine grundlegenden Verwendungsfähigkeiten beherrschen. Auf dieser Grundlage können Leser die Syntax und Anwendungen von Golang weiter erlernen, fortgeschrittenere Methodennutzungsfähigkeiten erlernen und ihre Programmierfähigkeiten verbessern.

Das obige ist der detaillierte Inhalt vonErste Schritte mit Golang-Methoden. 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