Первая программа
Разбираем первую программу по косточкам: package, import, func main.
package main — особый пакет, который превращает программу в исполняемую: именно в нём ищется функция
main— точка входа.
Каноническая первая программа
package main
import "fmt"
func main() {
fmt.Println("Привет, Go!")
}Вывод:
Привет, Go!
Три строки, а в них вся анатомия Go-программы. Разберём каждую.
package main
Любой файл Go начинается с объявления пакета. Пакет — это единица организации кода, набор файлов в одной папке. Пакет с именем main — особый: компилятор знает, что из него нужно собрать исполняемый файл, и ищет в нём функцию main. Если назвать пакет иначе (например, strings), получится библиотека, а не программа.
import "fmt"
Чтобы пользоваться чужим кодом, его пакет нужно импортировать. fmt (от format) — пакет стандартной библиотеки для ввода-вывода. Из него мы берём Println. Обратите внимание: Go строг к импортам — если импортировать пакет и не использовать его, программа не скомпилируется. Это намеренно: так код не обрастает мёртвыми зависимостями.
func main()
Функция объявляется словом func. main без аргументов и без возвращаемого значения — точка входа. Когда программа запускается, выполнение начинается отсюда. Открывающая фигурная скобка обязана стоять на той же строке, что и объявление, — это не стилистика, а требование языка (иначе автоматическая вставка точек с запятой сломает код).
Print, Println, Printf
В fmt три основных способа печати. Println печатает аргументы через пробел и добавляет перевод строки. Print — без перевода. Printf форматирует по шаблону, как printf в C.
package main
import "fmt"
func main() {
name := "Аня"
age := 30
fmt.Println("Имя:", name)
fmt.Printf("%s, возраст %d\n", name, age)
fmt.Printf("Тип age: %T\n", age)
}Вывод:
Имя: Аня Аня, возраст 30 Тип age: int
Глаголы форматирования: %s — строка, %d — целое число, %v — значение в формате по умолчанию, %T — тип значения. Универсальный %v печатает почти что угодно, а %+v для структур покажет ещё и имена полей.
Итог
package main+func main()= исполняемая программа.- Неиспользованный импорт — ошибка компиляции, это норма Go.
Printlnдля простой печати,Printfс глаголами%s %d %v %T— для форматированной.