Совсем другая книга про Go #
Введение #
Формат “маленьких книг” Карла Сегуина – лучшее, что только может быть для быстрого входа. Только самое важное, необходимый минимум без деталей, в которых так легко утонуть поначалу. Когда появится общая картина и дыры, требующие заполнения, станут очевидны, задавать правильные вопросы и самостоятельно находить на них ответы – в книгах, спецификациях, интернет-обсуждениях – не составит уже никакой сложности.
Когда-то “Маленькая книга про Go” вдохновила меня написать несколько других “маленьких книг” – на темы, для которых книг Карла не было. А потом, когда я сам пришел к Go и вернулся к этой книге, оказалось, что демонстрационные примеры еще работают, а вот написать что-то реальное уже не получается. Как же так?
Все меняется, в случае с Go – меняется драматически. Модули в обновленном Go настолько отличаются, что написать программу сложнее пресловутого HelloWorld уже невозможно. И с этим надо что-то срочно делать. Начавшему однажды писать трудно остановиться. Я решил разобраться во всем сам и все это записать. Это будет совсем другая книга про Go. Подобные записи всегда делаются для себя, но если кому-то еще будет от них польза… что же, это будет лучшим применением сил и времени.
Не судите строго.
Первая программа #
Здесь все по классике. Пройти все этапы от написания кода до его выполнения – первый урок в изучении любой технологии.
Создайте файл hello.go
:
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
Выполните его:
$ go run hello.go
Hello, world!
Или скомпилируйте и выполните:
$ go build hello.go
$ ./hello
Hello, world!
Вот, в общем-то и все. Скомпилированная программа это двоичный исполняемый файл для вашей операционной системы – Windows, Linux, MacOS. Собрать программу можно из одной операционной системы для другой, но это детали.
Совсем другая? #
Да, другая. Сначала важное, помните? Вот и мы, забегая вперед, начнем с модульной организации программы. А уже потом вернемся к началу.
Забегая вперед #
Модули #
В Go все это модули. Любая программа состоит из модулей, одни из которых являются частью стандартной библиотеки, другие - ваши собственные. Если один из них называется main
и содержит функцию main
, то его можно собрать в самостоятельный исполнимый файл. Все остальные модули можно использовать только в виде подключаемых библиотек. Кубиков для построения вашей программы. А теперь давайте еще посмотрим на нашу программу.
В первой строке объявляется имя модуля. Во второй строке импортируется содержимое модуля fmt
. Этот модуль - часть стандартной библиотеки, отвечающей за форматированный ввод и вывод. В нем содержится функция Println
, которую мы использовали в первой программе. Функции из модуля вызываются с указанием имени модуля - fmt.Println
.
И еще. Println
записано с большой (прописной) буквы не для красоты. Это еще одна важная деталь - функции, которые доступны извне, пишутся с большой буквы, а функции, доступные только внутри модуля, с маленькой.