Sobes.tech
Junior

Welche Datentypen gibt es in Go?

sobes.tech KI

Antwort von AI

In Go gibt es vier Kategorien von Datentypen:

  1. Basistypen (Basic types) - vom Compiler vordefiniert.

    • Boolesche: bool
    • Numerische:
      • Ganzzahlen: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Gleitkommazahlen: float32, float64
      • Komplexe Zahlen: complex64, complex128
    • Strings: string
  2. Aggregierte Typen (Aggregate types) - Sammlungen fester Größe.

    • Arrays: [n]T (wobei n die Größe ist, T der Elementtyp)
    • Strukturen: struct {} (Sammlung benannter Felder verschiedener Typen)
  3. Referenztypen (Reference types) - Referenztypen, die per Referenz übergeben werden, speichern einen Zeiger auf die Basisdaten.

    • Slices: []T (dynamisches Array, basiert auf einem Array)
    • Karten (Maps): map[K]V (Sammlung von Schlüssel-Wert-Paaren)
    • Zeiger: *T (speichern die Adresse einer Variablen)
    • Kanäle: chan T, chan<- T, <-chan T (zur Synchronisation und Kommunikation zwischen Goroutines)
    • Funktionen: func(...) (...) (der Typ ist die Signatur der Funktion)
  4. Schnittstellentypen (Interface types) - definieren eine Reihe von Methodensignaturen, die von Datentypen implementiert werden.

    • Schnittstellen: interface{} (leere Schnittstelle), interface{ methodName(...) ... }

Beispiele:

// Basistypen
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Aggregierte Typen
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Array
type Person struct { // Struktur
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Referenztypen
var slice []int = []int{1, 2, 3}           // Slice
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Karte
var ptr *int = &age                     // Zeiger
var dataChan chan int = make(chan int)  // Kanal
var myFunc func(int) int = func(x int) int { return x * 2 } // Funktion

// Schnittstellentypen
var i interface{} = "anything" // Leere Schnittstelle
type Shape interface { // Schnittstelle
    Area() float64
}