Sobes.tech
Junior

Koje vrste podataka postoje u Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go postoje četiri kategorije tipova podataka:

  1. Osnovni tipovi (Basic types) - unapred definisani od strane kompajlera.

    • Logički: bool
    • Numerički:
      • Celi brojevi: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Brojevi sa pokretnom zarezom: float32, float64
      • Kompleksni brojevi: complex64, complex128
    • Nizovi: string
  2. Složeni tipovi (Aggregate types) - kolekcije fiksne veličine.

    • Nizovi: [n]T (gde je n veličina, T tip elemenata)
    • Strukture: struct {} (kolekcija imenovanih polja različitih tipova)
  3. Referentni tipovi (Reference types) - tipovi referenci, prosleđuju se putem reference, čuvaju pokazivač na osnovne podatke.

    • Sejti: []T (dinamički niz, zasnovan na nizu)
    • Mape: map[K]V (kolekcija parova ključ-vrednost)
    • Pokazivači: *T (čuvaju adresu promenljive)
    • Kanali: chan T, chan<- T, <-chan T (za sinhronizaciju i komunikaciju između gorutina)
    • Funkcije: func(...) (...) (tip je potpisa funkcije)
  4. Interfejsni tipovi (Interface types) - definišu skup potpisa metoda koje implementiraju tipovi podataka.

    • Interfejsi: interface{} (prazan interfejs), interface{ methodName(...) ... }

Primeri:

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

// Složeni tipovi
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Niz
type Person struct { // Struktura
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Referentni tipovi
var slice []int = []int{1, 2, 3}           // Sejt
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Mapa
var ptr *int = &age                     // Pokazivač
var dataChan chan int = make(chan int)  // Kanal
var myFunc func(int) int = func(x int) int { return x * 2 } // Funkcija

// Interfejsni tipovi
var i interface{} = "anything" // Prazan interfejs
type Shape interface { // Interfejs
    Area() float64
}