Назад к вопросам
Junior
171
questionbank
Какие существуют типы данных в Go?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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):
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
}