Go: часть 1 – структура программы

Программа на Go как правило состоит из:

  • объявление пакета
  • импорт пакетов
  • функций
  • переменных
  • операторов и выражений
  • комментариев

Hello, World на Go

Структура

Рассмотрим классический пример – “Hello, World” на Go:

package main
  
import "fmt"

func main() {
   /* This is my first sample program. */
   fmt.Println("Hello, World!")
}

Рассмотрим её построчно:

  1. package main: задаёт имя пакета, пакет main является точкой входа по умолчанию для программ на Go
  2. import "fmt": команда препроцессору, указывающая на необходимость импортировать пакет fmt из стандартного набора пакетов Go (/usr/lib/go/src/fmt)
  3. func main(): начало выполнения программы, аналогично C
  4. /* string */: комментарий
  5. fmt.Println(...): вызов функции Println() из пакета fmt для вывода текста

Сборка и запуск

Запустить программу на Go можно несколькими способами.

Первый вариант – с помощью go run:

[simterm]

$ go run hello.go 
Hello, World!

[/simterm]

Второй вариант – собрать исполняемый файл, и вызывать непосредственно его:

[simterm]

$ go build hello.go
$ ls -l
total 1984
-rwxr-xr-x 1 setevoy setevoy 2025142 Feb 20 11:07 hello
-rwxr-xr-x 1 setevoy setevoy     118 Feb 20 11:02 hello.go

[/simterm]

Запускаем:

[simterm]

$ ./hello
Hello, World!

[/simterm]

Сборка для других платформ

Т.к. программы Go представляют собой исполняемые файлы – для каждой платформы необходимо собирать свой файл.

Быстрый пример сборки exe-файла для Windows, выполнямая на Arch Linux:

[simterm]

$ env GOOS=windows GOARCH=amd64 go build hello.go 
$ ls -l
total 4000
-rwxr-xr-x 1 setevoy setevoy 2025142 Feb 20 11:07 hello
-rwxr-xr-x 1 setevoy setevoy 2063872 Feb 20 11:42 hello.exe
-rwxr-xr-x 1 setevoy setevoy     118 Feb 20 11:02 hello.go

[/simterm]

Проверяем с помощью wine:

[simterm]

$ WINEDEBUG=fixme-all wine64 hello.exe 
Hello, World!

[/simterm]

Продолжение – часть 2 – базовый синтаксис.