Sobes.tech
Junior

Kokie duomenų tipai yra Go?

sobes.tech AI

Atsakymas iš AI

Go kalboje yra keturios duomenų tipų kategorijos:

  1. Pagrindiniai tipai (Basic types) - iš anksto apibrėžti kompiliatoriaus.

    • Boolean: bool
    • Skaitmeniniai:
      • Sveikieji: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Plaukiojantys taškai: float32, float64
      • Kompleksiniai skaičiai: complex64, complex128
    • Eilutės: string
  2. Sudėtinių tipų (Aggregate types) - fiksuoto dydžio kolekcijos.

    • Masyvai: [n]T (kur n - dydis, T - elementų tipas)
    • Struktūros: struct {} (kolekcija su pavadintais laukais)
  3. Nuorodų tipai (Reference types) - nuorodos, perduodamos per nuorodą, saugo nuorodą į pagrindinius duomenis.

    • Slydimo masyvai: []T (dinaminis masyvas, sukurtas iš masyvo)
    • Žemėlapiai (Map): map[K]V (raktų ir reikšmių poros)
    • Nuorodos: *T (saugo adresą)
    • Kanalai: chan T, chan<- T, <-chan T (sinchronizacija ir komunikacija gorutinose)
    • Funkcijos: func(...) (...) (fukcijos parašas)
  4. Sąsajos tipai (Interface types) - apibrėžia metodų parašus, kuriuos įgyvendina duomenų tipai.

    • Sąsajos: interface{} (tuščia sąsaja), interface{ methodName(...) ... }

Pavyzdžiai:

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

// Sudėtinių tipų
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Masyvas
type Person struct { // Struktūra
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Nuorodų tipai
var slice []int = []int{1, 2, 3}           // Slydimas masyvas
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Žemėlapis
var ptr *int = &age                     // Nuoroda
var dataChan chan int = make(chan int)  // Kanalas
var myFunc func(int) int = func(x int) int { return x * 2 } // Funkcija

// Sąsajos tipai
var i interface{} = "anything" // Tuščia sąsaja
type Shape interface { // Sąsaja
    Area() float64
}