Sobes.tech
Junior

Aké typy údajov existujú v Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go existujú štyri kategórie dátových typov:

  1. Základné typy (Basic types) - preddefinované kompilátorom.

    • Logické: bool
    • Číselné:
      • Celé čísla: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Plávajúce čísla: float32, float64
      • Komplexné čísla: complex64, complex128
    • Reťazce: string
  2. Zhlukové typy (Aggregate types) - kolekcie pevnej veľkosti.

    • Poľia: [n]T (kde n je veľkosť, T je typ prvkov)
    • Štruktúry: struct {} (kolekcia pomenovaných polí rôznych typov)
  3. Referenčné typy (Reference types) - typy odkazov, odovzdávajú sa odkazom, ukladajú ukazovateľ na základné údaje.

    • Slicing: []T (dynamické pole založené na poli)
    • Mapy: map[K]V (kolekcia párov kľúč-hodnota)
    • Ukazovatele: *T (ukladajú adresu premennej)
    • Kanály: chan T, chan<- T, <-chan T (pre synchronizáciu a komunikáciu medzi gorutinami)
    • Funkcie: func(...) (...) (typ je podpis funkcie)
  4. Rozhrania (Interface types) - definujú sadu podpisov metód, ktoré implementujú typy údajov.

    • Rozhrania: interface{} (prázdne rozhranie), interface{ methodName(...) ... }

Príklady:

// Základné typy
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Zhlukové typy
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Pole
type Person struct { // Štruktúra
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Referenčné typy
var slice []int = []int{1, 2, 3}           // Slicing
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Mapa
var ptr *int = &age                     // Ukazovateľ
var dataChan chan int = make(chan int)  // Kanál
var myFunc func(int) int = func(x int) int { return x * 2 } // Funkcia

// Rozhrania
var i interface{} = "anything" // Prázdne rozhranie
type Shape interface { // Rozhranie
    Area() float64
}