Sobes.tech
Senior

Welche Datentypen in Go sind Referenztypen?

sobes.tech KI

Antwort von AI

In Go werden Referenztypen als solche betrachtet, die einen Zeiger auf einen Speicherbereich speichern, nicht die Daten selbst. Dazu gehören:

  • Zeiger (*Type) — speichern die Adresse des Wertes.
  • Slices ([]Type) — Struktur, die einen Zeiger auf ein Array, die Länge und die Kapazität enthält.
  • Maps — intern durch eine Hashtabelle implementiert, werden per Referenz übergeben.
  • Kanäle (chan) — referenzierter Typ für die Kommunikation zwischen Goroutinen.
  • Funktionen — Funktionsvariablen, die per Referenz übergeben werden.

Zum Beispiel, beim Übergeben eines Slices an eine Funktion wird die Struktur mit dem Zeiger kopiert, aber nicht die Elemente des Arrays, auf das sie zeigt. Dies ermöglicht eine effiziente Arbeit mit großen Datenmengen ohne Kopieren.

func modify(slice []int) {
    slice[0] = 100
}

func main() {
    s := []int{1, 2, 3}
    modify(s)
    fmt.Println(s) // [100 2 3]
}