capypad
0 Tage Serie
go / beginner
Snippet

Eigene Typen mit Structs definieren

Structs sind zusammengesetzte Typen, die verwandte Felder gruppieren. Du definierst ein Struct mit dem `type`-Keyword und erstellst Instanzen mit geschweifter Klammer-Initialisierung. Methoden können mit einem Receiver an Structs angehängt werden - hier bedeutet `(r Rectangle)`, dass die Methode zu Rectangle-Werten gehört. Zeiger auf Structs sind nützlich für Mutation und werden automatisch dereferenziert beim Zugriff auf Felder.

snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main
 
import "fmt"
 
type Rectangle struct {
Width float64
Height float64
}
 
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
 
func main() {
rect := Rectangle{Width: 10.5, Height: 4.2}
fmt.Printf("Area: %.2f\n", rect.Area())
 
ptr := &rect
fmt.Printf("Width via pointer: %.2f\n", ptr.Width)
}
Erklärung
1
type Rectangle struct {
Definiert einen neuen Struct-Typ mit Width- und Height-Feldern
2
func (r Rectangle) Area() float64 {
Methode mit Value-Receiver an Rectangle angehängt
3
rect := Rectangle{Width: 10.5, Height: 4.2}
Erstellt Instanz mit benannter Feld-Initialisierung
4
ptr := &rect
Erstellt einen Zeiger auf das Rechteck
5
ptr.Width
Go dereferenziert automatisch den Zeiger für Feldzugriff