← Назад к вопросам

Какие знаешь типы данных в Go?

1.0 Junior🔥 291 комментариев
#Основы Go

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Типы данных в Go

Go имеет богатую систему типов, которая включает базовые типы, составные типы и пользовательские типы.

Базовые (примитивные) типы

Целые числа:

  • int, int8, int16, int32, int64 — целые числа со знаком
  • uint, uint8, uint16, uint32, uint64 — целые числа без знака
  • byte — alias для uint8
  • rune — 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

Логический тип:

  • booltrue или 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 обеспечивает баланс между гибкостью и типобезопасностью, позволяя писать надежный и производительный код.