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
}