Sobes.tech
Junior

Go tilida qanday ma'lumot turlari mavjud?

sobes.tech AI

AIdan javob

Go tilida to'rt turdagi ma'lumotlar mavjud:

  1. Asosiy turlar (Basic types) - kompilyator tomonidan oldindan belgilangan.

    • Mantiqiy: bool
    • Raqamli:
      • Butun sonlar: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Oqimli sonlar: float32, float64
      • Kompleks sonlar: complex64, complex128
    • Qatorlar: string
  2. Kengaytirilgan turlar (Aggregate types) - belgilangan o'lchamdagi to'plamlar.

    • Massivlar: [n]T (bu yerda n o'lcham, T element turi)
    • Tuzilmalar: struct {} (turli nomlangan maydonlar to'plami)
  3. Manba turlar (Reference types) - manba turlar, manba orqali o'tkaziladi, asosiy ma'lumotlarga ko'rsatkich saqlaydi.

    • Slytslar: []T (dinamik massiv, massiv asosida)
    • Xaritalar (Map): map[K]V (kalit-qiymat juftliklari to'plami)
    • Ko'rsatkichlar: *T (o'zgaruvchining manzilini saqlaydi)
    • Kanal: chan T, chan<- T, <-chan T (gorutinalar orasida sinxronizatsiya va aloqa uchun)
    • Funktsiyalar: func(...) (...) (tipi funktsiyaning imzosi)
  4. Interfeys turlari (Interface types) - metod imzolarini belgilaydi, ma'lumot turlari tomonidan amalga oshiriladi.

    • Interfeyslar: interface{} (bo'sh interfeys), interface{ methodName(...) ... }

Misollar:

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

// Kengaytirilgan turlar
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Massiv
type Person struct { // Tuzilma
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Manba turlari
var slice []int = []int{1, 2, 3}           // Slyts
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Xarita
var ptr *int = &age                     // Ko'rsatkich
var dataChan chan int = make(chan int)  // Kanal
var myFunc func(int) int = func(x int) int { return x * 2 } // Funktsiya

// Interfeys turlari
var i interface{} = "anything" // Bo'sh interfeys
type Shape interface { // Interfeys
    Area() float64
}