Go-Programmiersprache - Methoden

GolangGolangBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses Labor zielt darauf ab, die Kenntnisse über die Methodenfunktion der Go-Programmiersprache zu testen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) go/ObjectOrientedProgrammingGroup -.-> go/methods("Methods") subgraph Lab Skills go/methods -.-> lab-15488{{"Go-Programmiersprache - Methoden"}} end

Methoden

Der bereitgestellte Code definiert einen Strukturtyp namens rect mit zwei Feldern, width und height. Zwei Methoden werden für diesen Strukturtyp definiert, area und perim. Die area-Methode berechnet die Fläche des Rechtecks, und die perim-Methode berechnet den Umfang des Rechtecks. Die Hauptfunktion ruft diese beiden Methoden auf und druckt ihre Ergebnisse.

  • Die area-Methode sollte einen Empfänger vom Typ *rect haben.
  • Die perim-Methode sollte einen Empfänger vom Typ rect haben.
  • Die area-Methode sollte die Fläche des Rechtecks zurückgeben.
  • Die perim-Methode sollte den Umfang des Rechtecks zurückgeben.
  • Die main-Funktion sollte beide Methoden aufrufen und ihre Ergebnisse drucken.
$ go run methods.go
area: 50
perim: 30
area: 50
perim: 30

## Als nächstes betrachten wir Go's Mechanismus zur Gruppierung und
## Benennung verwandter Methodensätze: Schnittstellen.

Hier ist der vollständige Code:

// Go unterstützt _Methoden_, die auf Strukturtypen definiert sind.

package main

import "fmt"

type rect struct {
	width, height int
}

// Diese `area`-Methode hat einen _Empfängertyp_ von `*rect`.
func (r *rect) area() int {
	return r.width * r.height
}

// Methoden können für Zeiger- oder Wertempfängertypen definiert werden.
// Hier ist ein Beispiel für einen Wertempfänger.
func (r rect) perim() int {
	return 2*r.width + 2*r.height
}

func main() {
	r := rect{width: 10, height: 5}

	// Hier rufen wir die 2 für unsere Struktur definierten Methoden auf.
	fmt.Println("area: ", r.area())
	fmt.Println("perim:", r.perim())

	// Go behandelt die Konvertierung zwischen Werten und
	// Zeigern für Methodenaufrufe automatisch. Sie können
	// einen Zeigerempfängertyp verwenden, um die Kopierung
	// bei Methodenaufrufen zu vermeiden oder um die Methode
	// zu ermöglichen, die empfangende Struktur zu mutieren.
	rp := &r
	fmt.Println("area: ", rp.area())
	fmt.Println("perim:", rp.perim())
}

Zusammenfassung

Dieses Labor testet die Fähigkeit, Methoden in Go zu definieren und sie zur Durchführung von Berechnungen auf Strukturtypen zu verwenden. Die area- und perim-Methoden werden für den rect-Strukturtyp definiert, und die main-Funktion ruft diese Methoden auf und druckt ihre Ergebnisse.