Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Типы данных в Go
Go имеет богатую систему типов, которая включает базовые типы, составные типы и пользовательские типы.
Базовые (примитивные) типы
Целые числа:
int,int8,int16,int32,int64— целые числа со знакомuint,uint8,uint16,uint32,uint64— целые числа без знакаbyte— alias дляuint8rune— alias дляint32, для Unicode символов
var a int = 42
var b uint8 = 255
var c rune = 'м'
Числа с плавающей точкой:
float32— 32-битное числоfloat64— 64-битное число (по умолчанию)
var pi float64 = 3.14159
var small float32 = 1.5
Логический тип:
bool—trueилиfalse
Строки:
string— неизменяемая последовательность байтов (UTF-8)
Составные типы
Массивы (Array):
- Фиксированная длина, однородные элементы
var arr [5]int = [5]int{1, 2, 3, 4, 5}
Срезы (Slice):
- Динамическая длина, посредник к массиву
- Самый часто используемый тип
var slice []int = []int{1, 2, 3}
slice = append(slice, 4)
Карты (Map):
- Неупорядоченная коллекция пар ключ-значение
var users map[string]int = make(map[string]int)
users["alice"] = 30
age, ok := users["bob"]
Структуры (Struct):
- Группировка полей разных типов
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 30}
Интерфейсы (Interface):
- Набор методов для реализации
- Полиморфизм в Go
type Reader interface {
Read(p []byte) (n int, err error)
}
Функции:
- Первоклассные объекты
- Можно присваивать переменным
var fn func(int, int) int = func(a, b int) int {
return a + b
}
Каналы (Channel):
- Коммуникация между goroutines
ch := make(chan int)
ch <- 42
value := <-ch
Указатели (Pointer):
- Хранят адрес памяти переменной
var x int = 10
var p *int = &x
*p = 20
Ключевые особенности
- Статическая типизация — проверка при компиляции
- Композиция вместо наследования
- Нулевые значения — безопасное значение по умолчанию для каждого типа
- Type assertion — для работы с интерфейсами при runtime
Вывод: Go обеспечивает баланс между гибкостью и типобезопасностью, позволяя писать надежный и производительный код.