Sobes.tech
Junior

Ի՞նչ տվյալների տեսակներ կան Go-ում։

sobes.tech AI

Պատասխան AI-ից

Go тілінде төрт түрлі деректер типтері бар:

  1. Негізгі типтер (Basic types) - компилятор алдын ала анықтаған.

    • Бульдік: bool
    • Сандық:
      • Түбірлі: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Үздіксіз ондық: float32, float64
      • Комплекс сан: complex64, complex128
    • Жолдар: string
  2. Жинақтау типтері (Aggregate types) - шектелген өлшемді жиынтықтар.

    • Массивтер: [n]T (мұнда n - өлшемі, T - элементтердің түрі)
    • Құрылымдар: struct {} (атауы бар өрістердің жиынтығы)
  3. Сілтеме типтері (Reference types) - сілтемелер, олар арқылы деректерге қатынау жүзеге асады.

    • Слайстар: []T (динамикалық массив, массив негізінде)
    • Карталар (Map): map[K]V (кілт-бағалар жұбы)
    • Сілтеме көрсеткіштері: *T (жадтағы орынға сілтеме)
    • Каналдар: chan T, chan<- T, <-chan T (горутиндер арасындағы байланыс және синхрондау)
    • Функциялар: func(...) (...) (функцияның сигнатурасы)
  4. Интерфейс типтері (Interface types) - әдістердің жиынтығын анықтайды.

    • Интерфейстер: interface{} (бос интерфейс), interface{ methodName(...) ... }

Мысалдар:

// Негізгі типтер
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Жинақтау типтері
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Массив
type Person struct { // Құрылым
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Сілтеме типтері
var slice []int = []int{1, 2, 3}           // Слайс
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Карта
var ptr *int = &age                     // Сілтеме көрсеткіші
var dataChan chan int = make(chan int)  // Канал
var myFunc func(int) int = func(x int) int { return x * 2 } // Функция

// Интерфейс типтері
var i interface{} = "anything" // Бос интерфейс
type Shape interface { // Интерфейс
    Area() float64
}