Создание окружения для GoLang
Обновляем ОС AltLinux:
$ apt-get update && apt-get dist-upgrade -y
Устанавливаем язык программирования GoLang:
$ apt-get install golang gcc -y
Смотрим версию golang:
$ go version
go version go1.21.7 linux/amd64
Смотрим переменные окружения GoLang:
$ go env
$GOPATH = "/home/user/go" - каталог, где располагаются наши проекты
$GOROOT = "/usr/lib/golang" - каталог, где хранятся пакеты golang
...
Создаем каталог для go-проектов:
$ mkdir -p ~/develop/golang
Меняем переменную окружения $GOPATH:
$ go env -w GOPATH="/home/user/develop/golang"
Проверяем установленную переменную окружения GOPATH:
$ go env GOPATH
/home/user/develop/golang
Выбор среды разработки go-программ
Для разработки go-программ будем использовать текстовый процессор, который идет из коробки в ОС GNU/Linux, в частности в ОС AltLinux - это vim.
Что надо знать о vim:
1. vim работает в двух режимах, первый режим командный, второй - режим редактирования текста;
2. Переход из командного режима в режим редактирования текста выполняется нажатием клавиши "i". Переход из режима редактирования текста в командный режим выполняется нажатием клавиши Esc или сочетанием клавиш Ctrl + C.
Если вы не знаете в каком режиме работы находится текстовый редактор vim, нажмите Esc вы гарантированно окажетесь в командном режиме, после чего нажмите клавишу "i".
3. Сохранение файла и выход из программы выполняются из командного режима следующим образом:
":w" - сохранить изменения в файле;
":q" - выйти из программы;
":wq" - сохранить изменения в файле и выйти из программы.
Это тот минимум, который необходимо знать для написания go-программ.
Если работа с vim Вам покажется сложной, попробуйте использовать текстовый редактор "nano".
Определение структуры каталогов для нашего проекта
Для хранения нашего проекта и последующих проектов, включая проектов на других языках программирования, будем использовать следующую структуру каталогов:
В домашнем каталоге пользователя ("~", команда "cd ~" переведёт вас в домашний каталог), в нашем случае имя пользователя `user`.
~/develop
~/develop/golang - каталог для хранения go-программ
~/develop/golang/testproject - go-коды программ для проекта "Test Project"
Создание первой программы на GoLang с простой структурой каталогов
Создаем каталог для тестового проекта и переходим в него:
$ mkdir -p ~/develop/golang/testproject && cd ~/develop/golang/testproject
Создаем файл main.go со следующим содержанием:
$ vim main.go
[нажимаем клавишу "i" для перевода vim в режим редактирования текста]
/*
Это много строчный комментарий. В первых строках программного кода всегда пишите информацию о себе. Например.
author: Author Name
email: Author email
blog: Author blog
*/
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, word!")
}
[нажимаем Esc или Ctrl+C Для перевода vim в командный режим и набираем ":wq", для сохранения изменения в файле и выхода из vim. Вводимые команды в командном режиме будут отображаться в левом нижнем углу программы vim]
Запустим программу на выполнение в режиме JIT-интепретации:
$ go run main.go
Hello, word!
Посмотрим список файлов в каталоге нашего проекта "ls":
$ ls
main.go main.go~
Файл main.go~ хранит версию файла main.go до сохранения изменений.
Скомпилируем программу под ОС GNU/Linux:
$ go build main.go
В результате получим исполняемый ELF-файл, который можем запустить для проверки:
$ ./main
Hello, word!
Выполним компиляцию main.go для выполнения программы на ОС Windows:
$ GOOS=windows GOARCH=amd64 go build main.go
В результате выполнения команды, в каталоге нашего проекта появится файл main.exe, которые если вы перенесете на Windows и запустите на выполнение, то увидите наше сообщение:
d:\>main.exe
Hello, word!
В связи с тем, что пользователям нашей программы понадобится справочная система, в каталоге проекта надо создать каталог `docs`, а чтобы файлы проекта `main.go` не находились в корне проекта, в каталоге проекта надо создать каталог `src`, более подробно такую структуру каталогов мы рассмотрим далее.
Создание второй программы на GoLang с более интересной структурой каталогов
(статья не закончена)