Sobes.tech
Junior

Welke datatypes bestaan er in Go?

sobes.tech AI

Antwoord van AI

In Go zijn er vier categorieën datatypes:

  1. Basistypen (Basic types) - vooraf gedefinieerd door de compiler.

    • Booleans: bool
    • Numeriek:
      • Gehele getallen: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Kommazettingen: float32, float64
      • Complexe getallen: complex64, complex128
    • String: string
  2. Samengestelde typen (Aggregate types) - collecties van vaste grootte.

    • Arrays: [n]T (waar n de grootte is, T het elementtype)
    • Structuren: struct {} (verzameling van benoemde velden van verschillende types)
  3. Referentietypen (Reference types) - typen die door verwijzing worden doorgegeven, slaan een pointer naar de basisgegevens op.

    • Slices: []T (dynamisch array, gebaseerd op een array)
    • Kaarten (Maps): map[K]V (verzameling van sleutel-waarde paren)
    • Pointers: *T (slaat het adres van een variabele op)
    • Kanalen: chan T, chan<- T, <-chan T (voor synchronisatie en communicatie tussen goroutines)
    • Functies: func(...) (...) (het type is de handtekening van de functie)
  4. Interfacetypen (Interface types) - definiëren een set van methodesignaturen die door datatypes worden geïmplementeerd.

    • Interfaces: interface{} (lege interface), interface{ methodName(...) ... }

Voorbeelden:

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

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

// Referentietypen
var slice []int = []int{1, 2, 3}           // Slice
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Kaart
var ptr *int = &age                     // Wijsvinger
var dataChan chan int = make(chan int)  // Kanaal
var myFunc func(int) int = func(x int) int { return x * 2 } // Functie

// Interfacetypen
var i interface{} = "anything" // Lege interface
type Shape interface { // Interface
    Area() float64
}