Модуль
1Hello, World!← вы здесь2Переменные в Go3Целые числа4Строки и руны5float64 и числа с плавающей точкой6if, switch, for7bool и логические операторы8Константы и iota9Пакет fmt: форматирование вывода
Урок 1~12 минут

Hello, World!

Первая программа

Вот минимальная программа на Go:

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

Всего 7 строк. Но каждая из них обязательна и несёт смысл. Кликни на любую строку в симуляторе выше — там подробное объяснение.


Запустить прямо сейчас

Hello, World!
Ctrl+Enter
1

Анатомия программы

package main

Каждый .go файл начинается с объявления пакета. main — особый пакет: компилятор знает, что из него нужно создать исполняемый файл.

go
package main   // исполняемый файл
package math   // библиотека — нельзя запустить напрямую
package http   // библиотека

import "fmt"

Подключает стандартную библиотеку fmt (format). Без неё fmt.Println не существует.

Go не подключает ничего автоматически. И, в отличие от многих языков, запрещает импортировать то, что не используешь:

go
import "fmt"   // используем fmt.Println — OK
import "os"    // не используем — ОШИБКА КОМПИЛЯЦИИ
// "os" imported and not used

Это дисциплина: в Go-коде нет мусорных импортов.

func main()

Точка входа. Go ищет именно эту функцию при запуске. Требования:

  • имя строго main (строчные)
  • пакет строго main
  • нет аргументов
  • нет возвращаемых значений

Аргументы командной строки — через os.Args, не через параметры функции.

fmt.Println("Hello, World!")

Вызов функции Println из пакета fmt. Выводит аргументы в stdout и добавляет \n.

go
fmt.Println("Hello")          // Hello
fmt.Println("A", "B", "C")   // A B C  (пробелы между аргументами)
fmt.Println(42, true, 3.14)   // 42 true 3.14

go run vs go build

go run — для разработки

bash
go run main.go

Компилирует и сразу запускает. Бинарник создаётся во временной папке и удаляется. Удобно для экспериментов.

go build — для production

bash
go build -o hello main.go   # создаёт бинарник ./hello
./hello                     # запускаем

Бинарник — самодостаточный. Не нужен Go, не нужны библиотеки. Скопировал на сервер — работает.

bash
# Собрать для Linux с Mac/Windows:
GOOS=linux GOARCH=amd64 go build -o hello-linux main.go
 
# Собрать для Windows:
GOOS=windows go build -o hello.exe main.go

Это кросс-компиляция — одна из суперсил Go. Без виртуальных машин и контейнеров.


Частые ошибки

Частые ошибки новичков
Ctrl+Enter
1

В следующем уроке разберём переменные — как Go хранит данные и почему нельзя объявить переменную и не использовать её.

go run компилирует и запускает — для экспериментов. go build создаёт бинарник — для production. Разница: go run удаляет бинарник после выполнения, go build оставляет.
main.go — кликни на строку
package main
 
import "fmt"
 
func main() {
fmt.Println("Hello, World!")
}
Нажми на любую строку кода, чтобы узнать, что она делает
🎯
Миссия 1 из 4
Как называется точка входа в программу на Go?