This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Golang. Долго, но понятно: Установка, сборка
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Способы изучать Go
- Если нравится формат FAQ, читайте дальше и пропустите эту секцию.
- Если любите решать задачки на leetcode, Codewars, CodinGame или HackerRank, то можете попробовать решать их на Go (они поддерживают решения на этом языке).
- Если любите смотреть уже готовые примеры решений и сравнивать их с решениями на знакомых вам языках программирования, загляните в rosettacode. Аналогичным ресурсом является Go by example.
- Для rosettacode есть сайт с side-by-side сравнением решений на двух языках. Вот, например, страница для GoPython.
- Для уверенных в себе есть learnxinyminutes. Качество подачи не слишком высокое, но это один из самых быстрых способов изучить самые базовые возможности языка.
- Если есть опыт с другими языками программирования, можно попробовать go tour.
Как установить Go?
Скачать нужный дистрибутив по ссылке: https://golang.org/dl/. Есть версии под Windows, Linux и macOS.
Качать последнюю стабильную версию (1.13.3).
Какой текстовой редактор использовать для Go?
- Visual studio code + плагин для Go
- Если знакомы продукты JetBrains Intellij, то Goland IDE
- Если всё выше звучит непонятно, то используйте https://play.golang.org/
Как проверить, что Go установлен?
Набрать в терминале go version . Если не работает, то нужно добавить путь к папке с исполняемым файлом go в переменную окружения PATH .
Как запускать программы на Go?
Создайте файл hello.go следующего содержания:
package main import «fmt» func main() < fmt.Println(«Hello, World!») >
Для запуска нужно сначала скомпилировать программу, а затем её запустить:
Первая программа на языке программирования Go — как начать программировать на go
$ go build -o hello.exe hello.go $ ./hello.exe Hello, World!
Но для таких простых случаев есть команда run , выполняющая эти два шага за вас:
$ go run hello.go Hello, World!
Что такое GOPATH? Как узнать его значение?
GOPATH указывает на директорию, куда будут устанавливаться пакеты и в которой будут искаться импортируемые (подключаемые) пакеты.
Если переменной окружения GOPATH нет, Go всё равно будет иметь некоторое значение по умолчанию. Узнать текущее значение GOPATH проще всего командой:
go env GOPATH
На системах типа Linux директория по умолчанию ~/go .
Внимание: после Go 1.13 важность GOPATH понизилась. Теперь нужно работать с модулями.
Что такое пакет?
Пакет — это набор файлов, который образует логическую группу. Можно называть пакет словом «библиотека» (хотя библиотека может состоять из нескольких пакетов).
Что такое модуль?
Модуль может содержать в себе один или более пакетов, он же ассоциирует с ними версию.
Например, пакет foo может быть частью модуля github.com/someuser/foo с версией v0.5.0 .
Для версий используется подход семантического версионирования.
Где найти документацию по стандартной библиотеке Go?
Можно установить 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 — книга, которая может дополнить книги, перечисленные выше.
Что такое «сообщество Go»?
GolangShow — русскоязычный подкаст о Go. Крутые ведущие, интересные гости.
Сообщество стоит понимать как «группа людей со схожими интересами и/или целями».
golang-ru Slack — русскоязычное Go сообщество. Там можно задавать вопросы, обсуждать Go, библиотеки под него и прочее.
Для вопросов лучше всего подходит канал #school (при формулировке вопроса можно опираться на How To Ask Questions The Smart Way).
Всем участникам следует соблюдать кодекс норм поведения.
Для Казани есть группа GolangKazan.
Источник: github.com
Golang
Убедитесь, что Go установлен правильно, настроив рабочее пространство и выполнив запуск простой программы следующим образом.
Создайте свой каталог рабочей области (workspace directory), $HOME/go ( % USERPROFILE%go для Windows). (Если вы хотите использовать другой каталог, вам нужно будет установить переменную среды GOPATH .)
Затем создайте каталог src/hello внутри своего рабочего пространства, и в этом каталоге создайте файл с именем hello.go , который выглядит следующим образом:
package main import ( «fmt» ) func main()
Затем выполните build его с помощью инструмента go :
$ cd $HOME/go/src/hello $ go build
C:> cd %USERPROFILE%gosrchello C:UsersAlexgosrchello> go build
Команда выше создаст исполняемый файл с именем hello ( hello.exe для Windows) в каталоге вместе с вашим исходным кодом. Выполните его, чтобы увидеть сообщение:
$ ./hello Запускаем свою программу!
C:UsersAlexgosrchello> hello Запускаем свою программу!
Если вы видите сообщение «Запускаем свою программу!», значит, ваша установка Go работает.
Вы можете запустить go install , чтобы установить бинарный файл в каталог bin вашего рабочего пространства или go clean -i , чтобы удалить его.
Источник: golang-blog.blogspot.com
Быстрый старт с Go: первые шаги

Go (также Golang) – компилируемый язык программирования, разработанный в компании Google и официально представленный в 2009 году. Он предназначен для создания высокоэффективных программ, рассчитанных на многоядерные и многопроцессорные компьютеры.
В этой статье мы рассмотрим азы Go, делая простые последовательные шаги:
- скачаем и установим компилятор;
- научимся писать несложный код, компилировать и запускать его;
- познакомимся с переменными;
- узнаем об условиях и циклах;
- освоим импорт и использование функций из пакетов;
- напишем игру «Угадай число».
Устанавливаем компилятор
Сначала посетим официальный сайт golang.org, чтобы скачать и инсталлировать компилятор Go. После этого в командной строке (терминале) станет доступна команда go. Вот пример диалога в командной строке Windows – здесь используется параметр version, который показывает версию установленного компилятора:
C:Usersuser>go version go version go1.13 windows/amd64
Пишем «Hello, World!»
Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале).
Разумеется, лучше использовать редактор с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск. Для Windows подойдёт Notepad++ с плагином NppExec. Для Linux и Мас – Geany или Atom. Подробно об их настройке можно прочитать в статье «Пишем код на Java и Go в текстовом редакторе».
Писать при изучении нового языка код, который выводит «Hello, world!», – давняя традиция. Она появилась в 1978 году с выходом книги «Язык программирования С» Брайана Кернигана и Денниса Ричи. Идея такой программы – создать минимальный по объёму работающий код.
package main func main() < println(«Hello, World!») >
Код начинается с ключевого слова package – объявления имени пакета. Для исполняемых файлов это всегда будет main, а для библиотек – имя директории, в которой находится файл. Функция main() – стартовая, своего рода точка входа в приложение. Она содержит вызов встроенной функции println(), которая выводит в консоль текст в скобках, заключённый в кавычки.
Набранный в редакторе код сохраняем в файле с именем hello.go. Теперь можно перейти в командную строку и запустить нашу программу для исполнения. Обратите внимание – нужно перейти в каталог, где мы сохранили файл. Вызываем go, указывая параметр run и имя файла через пробелы.
C:UsersUser>go run hello.go Hello, world!
Знакомимся с переменными
В программировании традиционно разделяют код и данные.
- Код – последовательность команд для обработки данных.
- Данные – информация, которая обрабатывается с помощью кода. Данные могут содержать числа, символы, строки, логические значения и так далее.
Для хранения данных используются переменные. Их можно представить образно – как коробки с данными, на каждой из которых написаны имя и тип переменной. Нам доступны:
- запись значения в переменную (или присвоение значения) – замена содержимого коробки;
- чтение значения из переменной – изъятие этого содержимого.
В Go любую переменную перед использованием необходимо объявить, то есть подготовить соответствующую коробку, указав тип и имя. Это связано с тем, что Go – язык со строгой и статической типизацией. Попытка использовать переменную без предварительного объявления приведёт к ошибке компиляции.
package main func main() < var x string = «Hello, world!» println(x) >
В этом примере для вывода приветствия используется строчная переменная. Она объявляется при помощи ключевого слова var, после имени указывается тип string. Знак равенства означает присваивание, запись значения в переменную.
Допустима сокращённая запись, без указания типа и слова var. В этом случае перед знаком равенства ставится двоеточие (получается := вместо =). И компилятор определяет тип по значению, которое присваивается.
Правильное именование переменных – важная часть разработки. Имена должны начинаться с буквы и могут содержать буквы, цифры и знак _ (подчёркивание). Имя должно быть мнемоническим – то есть «говорящим», объясняющим назначение переменной.
package main func main() < hello := «Hello, world!» println(hello) >
Узнаём про условия и циклы
В программировании часто требуется выполнять одну или другую группу команд в зависимости от результата проверки (ветвление). Такую возможность предоставляет оператор if.
package main func main() < water := 0 println(«Take a kettle») if water == 0 < println(«Pour water into the kettle») > else < println(«Enough water») > println(«Put the kettle on fire») >
Эта программа иллюстрирует ветвление, моделируя ситуацию с чайником.
После ключевого слова if идёт логическое выражение (water == 0), где значение переменной water сравнивается с нулём на равенство. Если water равна нулю (в чайнике нет воды), то результат выражения будет true (истина). И, согласно заданному условию, будет выполнен блок команд в фигурных скобках после логического выражения. В противном случае – если результат выражения false – выполнится блок после else.
Помимо ветвлений в программировании используются циклы, позволяющие повторять группы (блоки) команд. Работу с циклами в Go обеспечивает оператор for. Его базовая форма содержит три фрагмента (инициализация, условие, приращение). Первый и последний фрагменты могут отсутствовать. Пустой for создаёт бесконечный цикл.
Ниже приводим код, который иллюстрирует классический for, с использованием счётчика i. Результатом его работы будет колонка чисел от 0 до 4 – значения счётчика цикла на каждой итерации (повторе).
package main func main() < for i := 0; i < 5; i++ < println(i) > >
Импортируем пакеты
Один из важных принципов программирования – DRY: Don’t Repeat Yourself (не повторяйся). Это значит, что нам не нужно писать все модули своей программы с нуля. Вместо этого можно использовать уже готовые блоки или фрагменты, написанные кем-то ранее.
Поэтому Go поставляется с богатой библиотекой, которая содержит множество пакетов (packages). Каждый пакет имеет определённую тематику, на которую указывает его имя, и содержит соответствующие функции. Подробную документацию с описанием всех пакетов и функций можно найти на сайте Go в разделе “Packages”.
Если мы хотим использовать ту или иную функцию, нужно импортировать соответствующий пакет. К примеру, функции форматированного ввода-вывода содержатся в пакете fmt. Чтобы их применить, нужно добавить в код команду импорта, указывая имя пакета, и через точку после него вызывать нужную функцию.
package main import «fmt» func main() < fmt.Println(«Hello,», «world!») >
Создаём игру «Угадай число»
Наших знаний Go уже достаточно, чтобы написать игру «Угадай число». В ней компьютер загадывает целое число от 0 до 9, а человек должен отгадать его с трёх попыток.
Нам потребуются функции из пакета fmt для ввода-вывода и функция генерации случайных чисел из пакета rand.
import «fmt» import «math/rand»
Объявим и инициируем три целочисленные переменные: счётчик неудачных попыток – count, ввод числа с консоли – guess, загаданное число – number.
count := 0 guess := -1 number := rand.Intn(10)
Напишем основной игровой цикл. Условие его повторения описано после слова for. Тело цикла повторяется, пока значение счётчика неудачных попыток не достигнет числа 3 и при этом “загаданное” число ещё не будет отгадано.
В теле цикла читаем число-догадку с консоли и сравниваем с загаданным. В случае несовпадения выводим подсказку (больше или меньше) и увеличиваем счётчик неудачных попыток на 1. В случае совпадения цикл прекратится.
for count < 3 guess != number < fmt.Print(«Guess the number (0..9): «) fmt.Scanln( if guess < number < fmt.Println(«Your number is less») > else < fmt.Println(«Your number is bigger») > count++ > >
Также понадобится вывести результат игры (победа или проигрыш) после завершения игрового цикла.
if guess == number < fmt.Println(«Your WON!») > else < fmt.Println(«Your lose. «) >
Остаётся правильно собрать все эти фрагменты в одном файле – и можно пробовать сыграть с компьютером.
Поиграв с компьютером, мы обнаружим странное поведение генератора случайных чисел. А именно: раз за разом он генерирует одинаковую последовательность. Впрочем, это легко исправить следующей строкой кода, которую надо вставить до генерации случайного числа. Не забудьте при этом импортировать пакет time.
rand.Seed(time.Now().UnixNano())
Заключение
А тех, кто решил досконально освоить язык Go, мы приглашаем на курс Go-разработки. Вы научитесь решать реальные бизнес-задачи с помощью Go, а также добавите в портфолио несколько разноплановых проектов, с которыми можно смело идти к будущему работодателю.
Источник: gb.ru