Sobes.tech
Junior

Kādi ir datu tipi Go?

sobes.tech AI

Atbilde no AI

Go valodā ir četras datu tipu kategorijas:

  1. Pamattipi (Basic types) - iepriekš definēti kompilatora.

    • Booleans: bool
    • Skaitliskie:
      • Veselie: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Peldošie punkti: float32, float64
      • Kompleksie skaitļi: complex64, complex128
    • Virknes: string
  2. Kopumu tipiem (Aggregate types) - fiksēta izmēra kolekcijas.

    • Masīvi: [n]T (kur n - izmērs, T - elementa tips)
    • Struktūras: struct {} (kolekcija ar nosauktiem laukiem)
  3. Atsauces tipi (Reference types) - atsauces, kas tiek nodotas ar atsauci, glabā norādi uz galīgiem datiem.

    • Slaidus: []T (dinamisks masīvs, būvēts uz masīva pamata)
    • Kartes (Map): map[K]V (atslēgas-vērtības pāri)
    • Norādes: *T (glabā adresi)
    • Kanāli: chan T, chan<- T, <-chan T (sinhronizācija un komunikācija gorutinās)
    • Funkcijas: func(...) (...) (funkcijas paraksts)
  4. Interfeisa tipi (Interface types) - definē metožu parakstus, kurus īsteno datu tipi.

    • Interfeisi: interface{} (tukša interfeiss), interface{ methodName(...) ... }

Piemēri:

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

// Kopumu tipi
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Masīvs
type Person struct { // Struktūra
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Atsauces tipi
var slice []int = []int{1, 2, 3}           // Slaidus
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Karte
var ptr *int = &age                     // Norāde
var dataChan chan int = make(chan int)  // Kanāls
var myFunc func(int) int = func(x int) int { return x * 2 } // Funkcija

// Interfeisa tipi
var i interface{} = "anything" // Tukša interfeiss
type Shape interface { // Interfeiss
    Area() float64
}