Откройте свой терминал и запустите эту команду:

$ brew install go

Если у вас не установлен Homebrew, просто перейдите на этот сайт и следуйте инструкциям.

Теперь убедитесь, что у вас есть Go:

$ go version
> go version go1.6.2 darwin/amd64 # or your Go version

Установите $ GOPATH

Вам необходимо указать расположение рабочей области Go, чтобы Go знал, где запускать ваш код. Вы сделаете это с помощью переменной окружения $ GOPATH. Go делает все относительно вашего $ GOPATH, поэтому вам нужно убедиться, что ваш $ GOPATH настроен правильно. Мы настроим это с помощью вашего профиля оболочки.

Откройте свой профиль оболочки с помощью Vim:

$ vim .bash_profile

Примечание. Чтобы получить ускоренный курс по vim, ознакомьтесь с этим классным руководством под названием Vimland.

Добавьте следующие строки в свой профиль оболочки. Это установит $ GOPATH в ваше рабочее пространство. Имя не имеет особого значения, но я предлагаю установить для $ GOPATH значение / go или / gocode. Пока вы поддерживаете структуру под ним, все должно работать нормально.

# GOPATH
export GOPATH=”$HOME/go”
export PATH=”$PATH:$GOPATH/bin”

После сохранения файла вы можете закрыть vim.

Проверьте настройку $ GOPATH, запустив:

$ echo $GOPATH
> /Users/[USERNAME]/go

Навигация по рабочему пространству Go

Весь код Go хранится в одной рабочей области. Рабочая область содержит множество репозиториев . Репозитории содержат пакеты. Пакеты содержат исходные файлы Go.

Под зонтиком вашего рабочего пространства / go вы увидите три каталога:

> bin pkg src

Согласно Как писать код Go:

  • src содержит исходные файлы Go
  • pkg содержит объекты пакета
  • bin содержит исполняемые команды

Сегодня мы сосредоточимся на каталоге src, поскольку он является источником истины для всего кода, который вы будете писать. Давайте сделаем каталог src.

$ mkdir src
$ cd src
$ pwd
> /Users/[USERNAME]/go/src

Ранее мы упоминали репозитории, что рабочая область содержит множество репозиториев, которые содержат пакеты, содержащие исходные файлы Go. Репозитории контролируются версиями, как, например, Git.

В папке src у вас будет каталог с именем github.com. Использование в Go URL-адресов в качестве путей к файлам сначала кажется странным, но оказывается невероятно полезным при организации кода и навигации по рабочему пространству. src будет содержать весь ваш код Github, написанный на Go, а также другие репозитории управления версиями, которые могут быть у вас.

Чтобы управлять нашим кодом Github, нам нужно создать каталог с именем github.com в нашей папке src.

$ mkdir github.com

Теперь мы можем `cd` в каталог github.com, чтобы просмотреть наши замечательные репозитории Go. Здесь вы можете либо клонировать существующее репо, либо создать его. А пока мы создадим репозиторий Git под названием another-fancy-repo, чтобы мы могли его изучить, и начнем запускать какой-нибудь модный код Go.

Запуск нашей первой программы Go

$ cd github.com
$ pwd
> /Users/[USERNAME]/go/src/github.com
$ mkdir fancy-go-repo
$ cd fancy-go-repo

В нашем модном репозитории мы будем писать, запускать, создавать и тестировать наш код Go. Для нашего учебника мы будем запускать наш код, используя `go run`.

Внутри репозиториев создайте файл main.go.

$ touch main.go

Это будет наш основной файл. В конце концов у нас будет файл конфигурации (config.go) и пакеты, которые мы создаем (например, api / или сервер / пакет), но пока давайте просто остановимся на основах.

Go требует имени пакета в верхней части файла. Это указывает, из какого пакета будет запускаться файл. Поскольку у нас есть только один главный файл, а сейчас только один пакет, мы находимся в основном пакете. Во всем репозитории будет только одна функция с именем main, которая запускается из основного пакета в основном файле.

Чтобы продемонстрировать это, запишите это в свой файл main.go:

package main
func main() {
    fmt.Println("Hello, world!")
}

Теперь запустите файл:

$ go run main.go

Вы получили ошибку, которая выглядела примерно так?

# command-line-arguments
./main.go:4: undefined: fmt in fmt.Println

Хорошо. Нам нужно импортировать пакет fmt, чтобы использовать оператор Println. Операторы импорта Go мощны и идут после имени пакета. fmt - это встроенный пакет, поэтому мы получаем его бесплатно. Давайте импортируем его в начало файла:

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

Теперь попробуйте запустить файл:

$ go run main.go
> Hello, world!

Прекрасная работа!

Написание красивого, безошибочного кода

Чтобы код был безошибочным, убедитесь, что вы пропустили код через golint и пройдите проверку. Кроме того, ваш редактор должен запускать goimports при сохранении.

  • Golint проверяет, что стиль кодирования приятный, и удостоверяется, что ваш код соответствует принятому стилю проекта Go с открытым исходным кодом (даже Google использует его!). Он распечатает ваши стилистические ошибки.
  • Go vet заботится о правильности вашего кода. Он использует статический анализ.
  • Goimports - это инструмент для автоматического исправления (добавления, удаления) вашего импорта Go. Goimports запустит для вас gofmt, который переформатирует исходный код Go.

Что дальше…

Если вы хотите глубже погрузиться в чудесный мир го, я рекомендую вам ознакомиться с интерактивным Tour of Go от создателей Golang.

Дополнительные ресурсы

50 оттенков ловушек, подводных камней и типичных ошибок для новых разработчиков на Голанге

Структуры данных Go

Руководство по стилям программирования Go

Создание веб-приложения с помощью Golang

Модель памяти Go

Массивы, срезы (и строки): механизм« добавления »

Перейти к шаблонам параллелизма: конвейеры и отмены

Лучшие ссылки 2015 года

Если вам понравился этот Intro to Go, порекомендуйте его и поделитесь с другими. Размещайте любые вопросы, которые у вас есть, ниже!

Спасибо за чтение!