- Если нравится формат FAQ, читайте дальше и пропустите эту секцию.
- Если любите решать задачки на leetcode, Codewars, CodinGame или HackerRank, то можете попробовать решать их на Go (они поддерживают решения на этом языке).
- Если любите смотреть уже готовые примеры решений и сравнивать их с решениями на знакомых вам языках программирования, загляните в rosettacode. Аналогичным ресурсом является Go by example.
- Для rosettacode есть сайт с side-by-side сравнением решений на двух языках. Вот, например, страница для Go<->Python.
- Для уверенных в себе есть learnxinyminutes. Качество подачи не слишком высокое, но это один из самых быстрых способов изучить самые базовые возможности языка.
- Если есть опыт с другими языками программирования, можно попробовать go tour.
Скачать нужный дистрибутив по ссылке: https://golang.org/dl/. Есть версии под Windows, Linux и macOS.
Качать последнюю стабильную версию (1.13.3).
- Visual studio code + плагин для Go
- Если знакомы продукты JetBrains Intellij, то Goland IDE
- Если всё выше звучит непонятно, то используйте https://play.golang.org/
Набрать в терминале go version
.
Если не работает, то нужно добавить путь к папке с
исполняемым файлом go
в переменную окружения PATH
.
Создайте файл hello.go
следующего содержания:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Для запуска нужно сначала скомпилировать программу, а затем её запустить:
$ go build -o hello.exe hello.go
$ ./hello.exe
Hello, World!
Но для таких простых случаев есть команда run
, выполняющая эти два шага за вас:
$ go run hello.go
Hello, World!
GOPATH
указывает на директорию, куда будут устанавливаться пакеты
и в которой будут искаться импортируемые (подключаемые) пакеты.
Если переменной окружения GOPATH
нет, Go всё равно будет
иметь некоторое значение по умолчанию. Узнать текущее
значение GOPATH
проще всего командой:
go env GOPATH
На системах типа Linux директория по умолчанию ~/go
.
Внимание: после Go 1.13 важность GOPATH понизилась. Теперь нужно работать с модулями.
Пакет - это набор файлов, который образует логическую группу. Можно называть пакет словом "библиотека" (хотя библиотека может состоять из нескольких пакетов).
Модуль может содержать в себе один или более пакетов, он же ассоциирует с ними версию.
Например, пакет foo
может быть частью модуля github.com/someuser/foo
с версией v0.5.0
.
Для версий используется подход семантического версионирования.
Документация по пакетам: https://golang.org/pkg/.
Можно установить godoc и смотреть документацию оффлайн:
go get -v golang.org/x/tools/cmd/godoc
Теперь можно запустить godoc:
godoc -http=:8080
Если открыть в браузере адрес http://localhost:8080/pkg/, то вы увидите ту же документацию, что была доступна онлайн.
Сайт godoc.org можно использовать для поиска Go пакетов и/или их документации.
Внимание: вместо
godoc.org
теперь стоит использовать pkg.go.dev.
Большинство ссылок легко найти в гугле по запросу "golang learning resources".
Самое главное правило - всегда искать по слову golang
, а не go
.
Ниже наиболее стоящие результаты с описаниями:
- С чего начать новичку в Go
- Golang book (перевод на русский)
- Resources for new Go programmers - статья Dave Cheney, одного из ведущих разработчиков Go.
- golang/go/wiki/Learn - много учебного материала.
- Go videos - собрание видеозаписей докладов про Go.
- Go webdev examples - аналог Go by example, но с уклоном в веб разработку.
Многие книги имеют переводы на русский язык.
- Get programming with Go - хорошая книга если Go один из первых ваших языков программирования.
- The Go Programming Language - очень известная книга, довольно хороша, но подойдёт только тем, кто уже более-менее комфортно программирует на одном или более языках программирования.
- Go in practice - книга, которая может дополнить книги, перечисленные выше.
GolangShow - русскоязычный подкаст о Go. Крутые ведущие, интересные гости.
Сообщество стоит понимать как "группа людей со схожими интересами и/или целями".
golang-ru Slack - русскоязычное Go сообщество. Там можно задавать вопросы, обсуждать Go, библиотеки под него и прочее.
Для вопросов лучше всего подходит канал #school
(при формулировке вопроса можно
опираться на How To Ask Questions The Smart Way).
Всем участникам следует соблюдать кодекс норм поведения.
Для Казани есть группа GolangKazan.