Программирование

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 нет.