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:
-
Ə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
- Tam ədədlər:
- Stringlər:
string
- Booleanlər:
-
Kombinə olunmuş tipler (Aggregate types) - sabit ölçülü kolleksiyalar.
- Massivlər:
[n]T(buradanölçü,Tisə element tipi) - Strukturlar:
struct {}(fərqli tiplərdə adlandırılmış sahələr toplusu)
- Massivlər:
-
İ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)
- Slytslər:
-
İ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(...) ... }
- İnterfeyslər:
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
}