Sobes.tech
Junior

Jaké typy dat jsou v Go?

sobes.tech AI

Odpověď od AI

V jazyce Go existují čtyři kategorie datových typů:

  1. Základní typy (Basic types) - předdefinované kompilátorem.

    • Logické: bool
    • Číselné:
      • Celá čísla: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Plovoucí desetinná čísla: float32, float64
      • Složená čísla: complex64, complex128
    • Řetězce: string
  2. Seskupené typy (Aggregate types) - kolekce pevné velikosti.

    • Pole: [n]T (kde n je velikost, T je typ prvků)
    • Struktury: struct {} (kolekce pojmenovaných polí různých typů)
  3. Referenční typy (Reference types) - typy odkazů, předávají se odkazem, ukládají ukazatel na základní data.

    • Řezové pole (Slices): []T (dynamické pole založené na poli)
    • Mapy: map[K]V (kolekce párů klíč-hodnota)
    • Ukazatele: *T (ukládají adresu proměnné)
    • Kanály: chan T, chan<- T, <-chan T (pro synchronizaci a komunikaci mezi gorutinami)
    • Funkce: func(...) (...) (typ je podpis funkce)
  4. Rozhraní (Interface types) - určují sadu podpisů metod, které implementují datové typy.

    • Rozhraní: interface{} (prázdné rozhraní), interface{ methodName(...) ... }

Příklady:

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

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

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

// Rozhraní
var i interface{} = "anything" // Prázdné rozhraní
type Shape interface { // Rozhraní
    Area() float64
}