Sobes.tech
Junior

Milyen adattípusok léteznek a Go-ban?

sobes.tech MI

Válasz az MI-től

A Go nyolc adat típus kategóriával rendelkezik:

  1. Alapvető típusok (Basic types) - a fordító által előre definiált.

    • Logikai típusok: bool
    • Szám típusok:
      • Egész számok: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Lebegőpontos számok: float32, float64
      • Komplex számok: complex64, complex128
    • Sztringek: string
  2. Összetett típusok (Aggregate types) - fix méretű kollekciók.

    • Tömbök: [n]T (ahol n a méret, T az elemtípus)
    • Struktúrák: struct {} (nevezett mezők gyűjteménye különböző típusokból)
  3. Referencia típusok (Reference types) - referencia típusok, referencia által átadva, tárolnak egy mutatót az alapadatokra.

    • Szeletek: []T (dinamikus tömb, tömbön alapulva)
    • Térképek (Map): map[K]V (kulcs-érték párok kollekciója)
    • Mutatók: *T (egy változó címét tárolja)
    • Csatornák: chan T, chan<- T, <-chan T (szinkronizáció és kommunikáció goroutine-ok között)
    • Funkciók: func(...) (...) (a típus a függvény szignatúrája)
  4. Interfész típusok (Interface types) - meghatározzák a metódus szignatúrák halmazát, amelyeket a típusok megvalósítanak.

    • Interfészek: interface{} (üres interfész), interface{ methodName(...) ... }

Példák:

// Alapvető típusok
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Összetett típusok
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Tömb
type Person struct { // Struktúra
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Referencia típusok
var slice []int = []int{1, 2, 3}           // Szelet
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Térkép
var ptr *int = &age                     // Mutató
var dataChan chan int = make(chan int)  // Csatorna
var myFunc func(int) int = func(x int) int { return x * 2 } // Függvény

// Interfész típusok
var i interface{} = "anything" // Üres interfész
type Shape interface { // Interfész
    Area() float64
}