Go
Что такое Go?
Go открыли в Google в 2009 году. Код короткий, программа собирается в один файл и может работать без отдельной среды языка. Сборщик мусора есть, классов и наследования нет. Параллельная работа идёт через goroutine и channel.
Для чего нужен Go?
Go выбирают для сетевых служб и утилит. Большие части Docker и Kubernetes написаны на Go.
- HTTP API и микросервис
- Программа командной строки
- Утилита для файлов и сети
- Облачный и контейнерный проект
Что можно делать с Go?
На Go пишут быстрый веб-сервис, фоновую задачу и утилиту, которая одинаково переносится с машины на машину. В стандартной библиотеке есть HTTP-сервер, JSON и тесты. Память не освобождают руками, как в C.
Сложно ли освоить Go?
Синтаксис маленький, первая программа получается быстро. Труднее дженерики, повторные проверки ошибок и указатели. Фреймворка размером с Java нет: больше пишешь сам или берёшь маленькую библиотеку.
Плюсы и ограничения
Плюс: программа из одного файла, ясные ошибки и сильная параллельность. Ограничение: оконные библиотеки тонкие, это не первый выбор для GUI и мобильного приложения. Строка иногда длиннее, чем в Java или Kotlin, потому что ошибку проверяют на каждом шаге.
Основные понятия
В Go основа — пакет, функция и struct. Ошибка обычно отдельное возвращаемое значение, а не цепочка исключений.
- go.mod хранит зависимости
- goroutine — лёгкая параллельная задача
- channel несёт данные между задачами
- gofmt приводит код к одному виду
Короткий пример
Эта программа пишет одну строку в терминал. Если файл называется main.go, её запускают командой go run main.go.
package main
import "fmt"
func main() {
fmt.Println("Hello")
}Частые вопросы
- Go и Golang — один язык? Да. Официальное имя Go, в поиске ещё пишут Golang.
- Go заменяет Java? Не везде. Часто в сетевой службе, не в приложении Android.
- Нужен ли C до Go? Нет. C управляет памятью вручную, Go нет.