Sobes.tech
Junior

Millised andmetüübid on Go-s?

sobes.tech AI

Vastus AI-lt

Go keeles on neli andmetüübi kategooriat:

  1. Põhitüübid (Basic types) - eelnevalt määratletud kompilaatori poolt.

    • Tõeväärtuslikud: bool
    • Arvulised:
      • Täisarvud: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Ujukomaarvud: float32, float64
      • Kompleksarvud: complex64, complex128
    • Ridad: string
  2. Kogumitüübid (Aggregate types) - fikseeritud suurusega kogumid.

    • Massiivid: [n]T (kus n - suurus, T - elementide tüüp)
    • Struktuurid: struct {} (nimetatud väljade kogum)
  3. Viidatüübid (Reference types) - viited, mis edastatakse viitega, hoiavad viidet põhandmetele.

    • Slaidid: []T (dünaamiline massiiv, ehitatud massiivi põhjal)
    • Kaardid (Map): map[K]V (võtme-väärtuse paarid)
    • Viited: *T (hoiab aadressi)
    • Kanaleid: chan T, chan<- T, <-chan T (sünkroniseerimine ja kommunikatsioon gorutinates)
    • Funktsioonid: func(...) (...) (funktsiooni signatuur)
  4. Liidese tüübid (Interface types) - määratlevad meetodite signatuurid, mida tüübid rakendavad.

    • Liidesed: interface{} (tühi liides), interface{ methodName(...) ... }

Näited:

// Põhitüübid
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Kogumitüübid
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Massiiv
type Person struct { // Struktuur
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Viidatüübid
var slice []int = []int{1, 2, 3}           // Slaid
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Kaart
var ptr *int = &age                     // Viit
var dataChan chan int = make(chan int)  // Kanal
var myFunc func(int) int = func(x int) int { return x * 2 } // Funktsioon

// Liidese tüübid
var i interface{} = "anything" // Tühi liides
type Shape interface { // Liides
    Area() float64
}