Junior
Какви типове данни съществуват в Go?
sobes.tech AI
Отговор от AI
В Go съществуват четири категории типове данни:
-
Основни типове (Basic types) - предварително дефинирани от компилатора.
- Булеви:
bool - Числови:
- Цели числа:
int,int8,int16,int32,int64,uint,uint8(byte),uint16,uint32,uint64,uintptr - Четливи числа:
float32,float64 - Комплексни числа:
complex64,complex128
- Цели числа:
- Стрийгове:
string
- Булеви:
-
Съставни типове (Aggregate types) - колекции с фиксиран размер.
- Масиви:
[n]T(къдетоnе размерът,Tе типът на елементите) - Структури:
struct {}(колекция от именовани полета с различни типове)
- Масиви:
-
Референсни типове (Reference types) - типове, които се предават по референция, съхраняват указател към основните данни.
- Слайсове:
[]T(динамичен масив, базиран на масив) - Карти:
map[K]V(колекция от ключ-стойност двойки) - Указатели:
*T(съхраняват адрес на променлива) - Канали:
chan T,chan<- T,<-chan T(за синхронизация и комуникация между горутините) - Функции:
func(...) (...)(типът е сигнатурата на функцията)
- Слайсове:
-
Интерфейсни типове (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
}