Оператор многоточие в Golang

Reading time ~1 minute

Строго говоря, с точки зрения формальной спецификации языка Go, ... не является оператором (в отличие от +, =, <- и т.д.).

Официально это называется многоточием (ellipsis) и представляет собой специальный токен (знак препинания/символ), который используется в определенных синтаксических конструкциях. Однако среди разработчиков в неформальном общении его часто называют “оператором” для удобства.

Вот 4 основные ситуации, где используется ... в Go:

1. Вариативные функции (Variadic functions)

Используется при объявлении функции, чтобы указать, что она может принимать произвольное количество аргументов указанного типа:

func sum(nums ...int) int {
    // nums внутри функции представляет собой слайс []int
    total := 0
    for _, n := range nums {
        total += n
    }
    return total
}

2. Распаковка слайса (Slice unpacking / spread)

Используется при вызове функции, чтобы передать элементы слайса как отдельные аргументы (аналог spread-оператора в JavaScript или Python):

nums := []int{1, 2, 3}
// Распаковываем слайс nums и передаем его элементы в функцию sum
sum(nums...)

3. Автоматическое определение размера массива

Используется при объявлении массива, чтобы компилятор сам посчитал количество элементов (вместо того чтобы писать цифру вручную):

// Компилятор сам поймет, что размер массива равен 3
arr := [...]int{10, 20, 30} 

4. Использование в утилите go (командная строка)

Хотя это не относится к самому языку Go, можно часто встретить ... при работе с консольными командами. Оно означает “во всех пакетах, включая вложенные”:

go test ./...    # запустить тесты во всех пакетах текущей директории и поддиректориях
go mod tidy ./...

Итог: Технически это не оператор, а синтаксический токен многоточия, но по смыслу оно выполняет роль оператора распаковки/группировки.`

Ellipsis для массива в Go

Токен `...` **используется для массивов** и он **имеет огромный смысл** именно потому, что массивы в Go имеют фиксированную длину.Дело в ...… Continue reading

Что такое os.File

Published on September 21, 2026