Sobes.tech
Junior

Go-da hansı məlumat tipləri mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində dörd məlumat tipi kateqoriyası mövcuddur:

  1. Əsas tiplər (Basic types) - kompilyator tərəfindən əvvəlcədən təyin olunmuş.

    • Booleanlər: bool
    • Rəqəmsal:
      • Tam ədədlər: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Onluq ədədlər: float32, float64
      • Kompleks ədədlər: complex64, complex128
    • Stringlər: string
  2. Kombinə olunmuş tipler (Aggregate types) - sabit ölçülü kolleksiyalar.

    • Massivlər: [n]T (burada n ölçü, T isə element tipi)
    • Strukturlar: struct {} (fərqli tiplərdə adlandırılmış sahələr toplusu)
  3. İstinad tipləri (Reference types) - istinad tipləri, referenslə ötürülür, əsas verilərə göstərici saxlayır.

    • Slytslər: []T (dinamik massiv, array əsasında)
    • Xəritələr (Maps): map[K]V (açar-dəyər cütlükləri toplusu)
    • Göstəricilər: *T (dəyişənin ünvanını saxlayır)
    • Kanallar: chan T, chan<- T, <-chan T (gorutinalar arasında sinxronizasiya və kommunikasiya üçün)
    • Funkisiyalar: func(...) (...) (tipi funksiyanın imzasıdır)
  4. İnterfeys tipləri (Interface types) - metod imzalarının toplusunu müəyyən edir, məlumat tipləri tərəfindən həyata keçirilir.

    • İnterfeyslər: interface{} (boş interfeys), interface{ methodName(...) ... }

Nümunələr:

// Əsas tipler
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Kombinə olunmuş tipler
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Massiv
type Person struct { // Struktur
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// İstinad tipləri
var slice []int = []int{1, 2, 3}           // Slyts
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Xəritə
var ptr *int = &age                     // Göstərici
var dataChan chan int = make(chan int)  // Kanal
var myFunc func(int) int = func(x int) int { return x * 2 } // Funksiya

// İnterfeys tipləri
var i interface{} = "anything" // Boş interfeys
type Shape interface { // İnterfeys
    Area() float64
}