Junior
Kokie duomenų tipai yra Go?
sobes.tech AI
Atsakymas iš AI
Go kalboje yra keturios duomenų tipų kategorijos:
-
Pagrindiniai tipai (Basic types) - iš anksto apibrėžti kompiliatoriaus.
- Boolean:
bool - Skaitmeniniai:
- Sveikieji:
int,int8,int16,int32,int64,uint,uint8(byte),uint16,uint32,uint64,uintptr - Plaukiojantys taškai:
float32,float64 - Kompleksiniai skaičiai:
complex64,complex128
- Sveikieji:
- Eilutės:
string
- Boolean:
-
Sudėtinių tipų (Aggregate types) - fiksuoto dydžio kolekcijos.
- Masyvai:
[n]T(kurn- dydis,T- elementų tipas) - Struktūros:
struct {}(kolekcija su pavadintais laukais)
- Masyvai:
-
Nuorodų tipai (Reference types) - nuorodos, perduodamos per nuorodą, saugo nuorodą į pagrindinius duomenis.
- Slydimo masyvai:
[]T(dinaminis masyvas, sukurtas iš masyvo) - Žemėlapiai (Map):
map[K]V(raktų ir reikšmių poros) - Nuorodos:
*T(saugo adresą) - Kanalai:
chan T,chan<- T,<-chan T(sinchronizacija ir komunikacija gorutinose) - Funkcijos:
func(...) (...)(fukcijos parašas)
- Slydimo masyvai:
-
Sąsajos tipai (Interface types) - apibrėžia metodų parašus, kuriuos įgyvendina duomenų tipai.
- Sąsajos:
interface{}(tuščia sąsaja),interface{ methodName(...) ... }
- Sąsajos:
Pavyzdžiai:
// Pagrindiniai tipai
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"
// Sudėtinių tipų
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Masyvas
type Person struct { // Struktūra
Name string
Age int
}
var p Person = Person{Name: "Alice", Age: 25}
// Nuorodų tipai
var slice []int = []int{1, 2, 3} // Slydimas masyvas
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Žemėlapis
var ptr *int = &age // Nuoroda
var dataChan chan int = make(chan int) // Kanalas
var myFunc func(int) int = func(x int) int { return x * 2 } // Funkcija
// Sąsajos tipai
var i interface{} = "anything" // Tuščia sąsaja
type Shape interface { // Sąsaja
Area() float64
}