Модуль
1Что такое Go и зачем он нужен← вы здесь2Установка и первая программа
Урок 1~12 минут

Что такое Go и зачем он нужен

2007 год. Google. 45 минут тишины

Три инженера Google — Роберт Гризмер, Роб Пайк и Кен Томпсон — запустили сборку большого C++ проекта и... пошли пить кофе. Компиляция шла 45 минут.

Пока они ждали, набросали идею. Что если сделать язык, который:

  • компилируется за секунды, а не минуты
  • такой же читаемый, как Python
  • такой же быстрый, как C
  • с конкурентностью из коробки

Кен Томпсон — тот самый человек, который создал Unix и язык C. Роб Пайк — соавтор UTF-8. Это не стартап-проект, это люди, которые буквально придумали современные ОС.

В 2009 году Go стал открытым. В 2012 вышел Go 1.0 с главным обещанием: обратная совместимость навсегда. Код, написанный в 2012, компилируется компилятором 2024 без изменений.


Первый взгляд на язык

Вот программа Hello World на Go:

go
package main
 
import "fmt"
 
func main() {
    fmt.Println("Hello, World!")
}

Несколько вещей сразу бросаются в глаза:

  • package main — каждый файл принадлежит пакету
  • import "fmt" — стандартная библиотека, fmt = formatting
  • func main() — точка входа, как в C
  • Нет точек с запятой. Нет скобок вокруг условий. Нет public/private.

Сравни с Java:

java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Один и тот же результат. Но в Go — 5 строк, в Java — 5 строк с обвесом. В реальных проектах разрыв ещё больше.


Философия: сложность мультипликативна

В Go 25 ключевых слов. Вот они все:

break      default     func    interface  select
case       defer       go      map        struct
chan       else        goto    package    switch
const      fallthrough if      range      type
continue   for         import  return     var

Это не случайность. Авторы намеренно убрали всё, без чего можно обойтись:

  • Нет while — есть только for (он умеет всё)
  • Нет исключений — есть возврат ошибок через значения
  • Нет наследования — есть композиция и интерфейсы
  • Нет перегрузки функций — одно имя, одна функция

«Сложность мультипликативна. Убери одну сложность — и весь язык станет проще.» — Роб Пайк

Выучить синтаксис Go можно за один день. Его читать — ещё быстрее, потому что в нём нет магии.


Горутины: конкурентность без боли

Одна из главных причин выбирать Go — горутины (goroutines).

Обычный поток ОС весит ~1 МБ памяти. Горутина — ~2-8 КБ. На одной машине можно запустить сотни тысяч горутин одновременно.

go
func main() {
    go sendEmail()      // запускается параллельно
    go processPayment() // тоже параллельно
    go updateDatabase() // и это тоже
 
    time.Sleep(time.Second) // ждём завершения
}

Ключевое слово go перед вызовом функции — и она запускается в отдельной горутине. Это настолько просто, что кажется магией. В Java для этого нужен ExecutorService, ThreadPool, Future...

Горутины — тема Модуля 7. Пока запомни: это главная суперсила Go.


Где используется Go сегодня

ПроектОписаниеПочему Go
DockerКонтейнеризацияОдин бинарник, быстрый старт
KubernetesОркестрацияКонкурентность, производительность
TerraformИнфраструктура как кодКросс-платформа, один файл
PrometheusМониторингВысокая нагрузка, горутины
CockroachDBРаспределённая БДПроизводительность близкая к C
CaddyВеб-серверПростота развёртывания

Все эти проекты используются миллионами компаний. Kubernetes запускает большинство облачной инфраструктуры в мире.


Go vs другие языки

Go занимает нишу, которую раньше не мог занять никто: простота Python + скорость близкая к C + горутины. Выбери метрику в интерактивном блоке выше и сравни сам.


Итог

Go создали как ответ на реальные боли: медленная компиляция, сложный C++, боль с конкурентностью. Получился язык с маленьким ядром (25 слов), горутинами и гарантией обратной совместимости.

Сегодня Go — это язык инфраструктуры. Если ты работаешь с Docker, Kubernetes или облаком — ты уже используешь Go, просто не писал на нём сам.

Следующий урок: установим Go, напишем первую программу и разберём что в ней происходит по строкам.

В Go всего 25 ключевых слов. Выучи их все за один день — и ты уже знаешь весь синтаксис языка.
История Go
Нажми на любой год
Сравнение языков
Go
9/10
Python
10/10
Java
5/10
C++
2/10
🎯
Миссия 1 из 4
В каком году Go стал open source?