Golang подборка
Jun. 29th, 2016 09:01 pm
развернуть
Сайты
https://golang.org/
https://golang.org/dl/
https://gobyexample.com/
https://4gophers.ru/
https://www.golangprograms.com/
https://vk.com/golang
https://t.me/goproglib
https://t.me/gophernews
https://t.me/gogolang
https://t.me/godevjob
https://groups.google.com/forum/#!forum/golang-nuts
https://groups.google.com/forum/#!forum/golang-ru
Статьи
https://proglib.io/p/language-go/
https://habr.com/ru/hub/go/
С чего начать новичку в Go
https://svv-home.ru/?go=golang
Более 200 избранных ссылок на материалы о языке Go
Материалы по Go (golang)
Программирование на GO - материалы для изучения языка
Изучаем Go: подборка видеозаписей докладов
------------------------------------------------------------------------
Golang: основы для начинающих
Постулаты Go
Golang и ООП
Не без паники в Go
------------------------------------------------------------------------
график популярности языка
https://www.tiobe.com/tiobe-index/
http://roscidus.com/blog/blog/2013/06/09/choosing-a-python-replacement-for-0install/
Кому и зачем все-таки нужен Go?
5 причин, почему мы перешли с Python на Go (перевод)
Чем хорош язык Go и зачем его изучать? Все плюшки Golang
Golang в крупных проектах
Почему бизнес охотится на разработчиков Golang
За что я не люблю Go
Почему Go это плохо продуманный язык программирования
Почему Discord переходит с Go на Rust
Какой язык — D, Go или Rust имеет лучшие перспективы заменить C и почему?
------------------------------------------------------------------------
Топ-10 самых распространенных ошибок, которые мне встречались в Go-проектах
Шпаргалка по структурам данных в Go
Простые методы оптимизации программ Go
------------------------------------------------------------------------
Серия статей (довольно старая) на IBM Developer Works:
Краткий обзор и основы программирования
Разработка Web-приложений
Работа с базами данных
Создание GUI-приложений
------------------------------------------------------------------------
https://github.com/go-park-mail-ru/lecture1/blob/master/readme.md
50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков
Разбираемся в Go: пакет io
Постулаты Go
Лучшие практики Go, шесть лет в деле
Организация кода в Go
Зачем в Go амперсанд и звёздочка (& и *)?
Как не наступать на грабли в Go
Краш-курс по интерфейсам в Go
Горутины: всё, что вы хотели знать, но боялись спросить
Как устроены каналы в Go
------------------------------------------------------------------------
Всё, что вы хотели знать про GOPATH и GOROOT
Всё, что нужно знать о GOPATH
Введение в систему модулей Go
Практичный гайд по переменным окружения в Go
------------------------------------------------------------------------
Обработка ошибок в Go 2
Написание web-приложений на языке Go
Практическое использование в Go: организация доступа к базам данных
------------------------------------------------------------------------
Готовим deb из наших бинарников
Как собрать исполняемые файлы Go для нескольких платформ в Ubuntu 16.04
------------------------------------------------------------------------
Go. Подборка инструментов для построения Web API
Настройка Visual Studio Code для Go
Кросс-компиляция в Go
Кросс-компиляция приложений Go
https://github.com/golang/go/wiki/WindowsCrossCompiling
How To Build Go Executables for Multiple Platforms on Ubuntu 16.04
Транскомпилируемые языки: проекты конвертации код-в-код
------------------------------------------------------------------------
Создание desktop приложения с помощью Golang и Fyne
Книги
http://golang-book.ru
Введение в программирование на Go 2016 pdf
https://vk.com/main.php?subdir=proglib&subsubdir=go
https://codernet.ru/books/go/
Родом из Google: книги для знакомства с Go
30 лучших книг для освоения языка программирования Go
Книги, документация, статьи и курсы по Go
https://github.com/dariubs/GoBooks
Маленькая книга о Go
https://github.com/sefus/the-little-go-book/blob/master/ru/go.md
30 книг для освоения языка программирования Go
Программирование на Go Разработка приложений XXI века Марк Саммерфильд 2013
Язык программирования Go Алан А. А. Донован, Брайан У. Керниган 2016
Язык программирования Go Алан А. А. Донован, Брайан У. Керниган 2016
код из книги Язык программирования Go
go get gopl.io/ch1/helloworld
ls $GOPATH/bin
$GOPATH/bin/helloworld
git clone https://github.com/adonovan/gopl.io.git $HOME/dev/go/gobook
cd $HOME/dev/go/gobook
git remote -v update
git pull
https://git-scm.com/book/ru/v2
https://tproger.ru/translations/git-quick-start/
Эффективное использование Github
Курсы
Самоучители
http://golang-book.ru/
Go в примерах
Golang: основы для начинающих
REST API приложение на Go: пошаговый туториал
тур по языку программирования Go.
------------------------------------------------------------------------
Краткий пересказ Effective Go на русском языке
------------------------------------------------------------------------
Go конспект
https://drive.google.com/file/d/0B__cqmYoRw_6aHZ3QkZjMDB5SzA/view
------------------------------------------------------------------------
https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/preface.md
Руководство по языку Go
Руководство по веб-программированию языку Go
Обзор синтаксиса и возможностей Go
http://espressocode.top/go-language/
Перевод - Эффективный Go
Перевод "Руководство сотрудничества"
Видео
Программирование на Go с нуля: 9 полезных видеоуроков
Технострим Mail.Ru Group Программирование на Go
https://www.youtube.com/playlist?list=PLrCZzMib1e9q-X5V9pTM6J0AemRWseM7I
------------------------------------------------------------------------
Neuro Lab! Algorithms Осваиваем Golang
https://www.youtube.com/playlist?list=PLHUicSITKZEmz2w3zo-aUpxCUZuqONE4c
------------------------------------------------------------------------
Роман Левищенко Погружение в Google Go
https://github.com/index0h/dive-into-golang
https://www.youtube.com/playlist?list=PLBOo6DBmP5V9CAXxxl6EZxZpMmT_4ZOca
------------------------------------------------------------------------
Sergey Gavruk Пишем веб-приложение на Go
https://www.youtube.com/playlist?list=PLGtcqyFrda9474GltUO-7S4KoJVcdLMp4
------------------------------------------------------------------------
Uproger Курс разработчика Golang.
https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
------------------------------------------------------------------------
Посмотреть исходный код
Программное обеспечение
https://golang.org/dl/
https://golang.org/pkg/
https://launchpad.net/~gophers/+archive/ubuntu/archive
https://launchpad.net/~longsleep/+archive/ubuntu/golang-backports
http://labix.org/gopkg.in
Пакет yaml можно установить, запустив:
go get gopkg.in/yaml.v1
Ищем пакеты:
https://godoc.org/
https://github.com/golang/go/wiki/Projects
https://www.gorillatoolkit.org/
https://github.com/gorilla/
https://github.com/go-mgo/mgo
https://github.com/gopherjs/gopherjs
https://github.com/goby-lang/goby
http://www.godevtool.com/
https://golang.org/cmd/cgo/
https://blog.golang.org/c-go-cgo
https://github.com/mitchellh/gox
https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins
https://github.com/golang/sublime-config
https://github.com/fatih/vim-go
https://github.com/nsf/gocode
https://atom.io/packages/go-plus
https://github.com/Microsoft/vscode-go
http://go-ide.com/
http://liteide.org/en/
https://github.com/visualfc/liteide
https://sourceforge.net/projects/liteide/files/
Консоль
https://play.golang.org/
https://ideone.com/
https://repl.it/languages/go
https://gopry.rice.sh/ (жручее, go-pry)
https://github.com/gopherdata/gophernotes
http://labix.org/hsandbox
https://github.com/niemeyer/hsandbox
https://github.com/haya14busa/goplay
https://github.com/mkouhei/gosh
https://github.com/d4l3k/go-pry
https://github.com/motemen/gore
https://github.com/cosmos72/gomacro
https://github.com/sbinet/igo
https://github.com/sbinet/go-eval
https://github.com/emicklei/rango
$ echo 'export GOPATH=$HOME/dev/go' >> $HOME/.bashrc
$ echo 'export PATH=${GOPATH}/bin:$PATH' >> $HOME/.bashrc
$ source $HOME/.bashrc
Разное (фреймворки тд.)
https://hub.docker.com/_/golang
https://awesome-go.com/
Кураторский список платформ Go, библиотек и программного обеспечения
Top 6 web frameworks for Go as of 2017
Juju — краткий обзор
Revel — высокопроизводительный веб-фреймворк на языке Go
Фреймворк Gin
https://golang.org/pkg/net/http/
https://beego.me/
https://github.com/astaxie/beego
https://gobuffalo.io/en
https://github.com/gobuffalo/buffalo
http://www.gorillatoolkit.org/
https://echo.labstack.com/
https://github.com/labstack/echo
https://revel.github.io/
https://github.com/revel/revel
https://github.com/alehano/gobootstrap
https://github.com/gin-gonic/gin
https://github.com/kataras/iris
https://github.com/ianberdin/soso-server
https://github.com/qor/qor
https://github.com/juju/juju
https://github.com/boltdb/bolt
https://gobyexample.com/
https://getgophish.com/
https://github.com/gophish/gophish
https://hub.docker.com/r/matteoggl/gophish/
https://github.com/valyala/fasthttp
https://github.com/yudai/gotty
https://github.com/plasma-umass/browsix
https://gogs.io/
https://hub.docker.com/u/gogs
https://gitea.io/en-us/
https://try.gitea.io/
https://hub.docker.com/u/gitea
https://github.com/golang/go/wiki/Mobile
https://github.com/golang/mobile
https://github.com/google/grumpy
Вопросы, ответы, решения
godoc -http=":6060"
открыть адрес
http://localhost:6060/pkg/
Поиск Golang примеров в более чем 1.000.000 open-source проектах
установка
Как установить GoLang (язык программирования Go) в Linux
$ cd ~/Downloads
$ wget -c https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz
$ shasum -a 256 go1.7.3.linux-amd64.tar.gz
ead40e884ad4d6512bcf7b3c7420dd7fa4a96140 go1.7.3.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xvzf go1.7.3.linux-amd64.tar.gz
$ sudo mv /usr/local/go /usr/local/go1.7.3
$ sudo ln -s /usr/local/go1.7.3 /usr/local/go
$ mkdir -p ~/dev/go_projects/{bin,src,pkg}
$ cd ~/dev/go_projects
$ ls
$ export PATH=$PATH:/usr/local/go/bin
$ echo 'export GOPATH="$HOME/dev/go_projects"' >> ~/.profile
$ echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile
$ source ~/.profile
если вы установили GoLang в домашний каталог, добавьте строки приведенные ниже в файл $HOME/.profile
$ echo 'export GOROOT=$HOME/go' >> ~/.profile
$ echo 'export PATH=$PATH:$GOROOT/bin' >> ~/.profile
$ source ~/.profile
Проверьте как прошла установка GoLang
$ go version
$ go env
https://golang.org/dl/
Установка Go и настройка локальной среды разработки в Ubuntu 18.04
GOPATH
Начиная с версии 1.8: вам не нужно устанавливать GOPATH или GOROOT. GOPATH по умолчанию находится в вашем каталоге user/home.
Если GOPATH не задан, предполагается, что он равен $ HOME/go в системах Unix и% USERPROFILE%\go в Windows. Если вы хотите использовать пользовательское местоположение в качестве своего рабочего пространства, вы можете установить переменную среды GOPATH.
GOPATH — такой же как и системный PATH, только для go. И точно также, как и в PATH мы указываем НЕСКОЛЬКО каталогов, в ОДНОМ GOPATH можно указать несколько точек входа к рабочим go-пространствам.
Готовим сборку Go-приложения в продакшн
# По умолчанию GOPATH определен как $HOME/go:
$ go env | grep GOPATH
GOPATH="/home/elena/go"
# Изменим значение переменной окружения GOPATH и посмотрим, что будет:
$ GOPATH=/Users/tmp/something
$ go env | grep GOPATH
GOPATH="/Users/tmp/something"
# Теперь попробуем задать переменную непосредственно в процессе вызова команды go env:
$ GOPATH=/pampam go env | grep GOPATH
GOPATH="/pampam"
А в рамках текущей сессии значение GOPATH по-прежнему не изменилось:
elena:~ $ go env | grep GOPATH
GOPATH="/Users/tmp/test"
# Уберем значение GOPATH вообще и посмотрим, что будет:
$ GOPATH=
$ go env | grep GOPATH
GOPATH="/Users/elena/go"
$ # Мы вернулись к значению по умолчанию :)
https://github.com/moovweb/gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
gvm listall
удалить gvm
gvm implode
https://wiki.archlinux.org/index.php/Go_(Русский)
Кросс-компиляция
$GOOS и $GOARCH darwin 386 darwin amd64 darwin arm darwin arm64 dragonfly amd64 freebsd 386 freebsd amd64 freebsd arm linux 386 linux amd64 linux arm linux arm64 linux ppc64 linux ppc64le linux mips64 linux mips64le linux s390x netbsd 386 netbsd amd64 netbsd arm openbsd 386 openbsd amd64 openbsd arm plan9 386 plan9 amd64 plan9 arm solaris amd64 windows 386 windows amd64
пример
GOOS=windows GOARCH=386 go build -o hello.exe
Компилятор go по умолчанию собирает пакет с дополнительной информацией которая влияет только на отладку и анализ полученного файла.
Чтобы этого избежать можно использовать ключ -ldflags с флагами отвечающими за отключения отладочной информации (-w) и сгенерированной таблицей символов (-s):
$ go build -ldflags '-w -s' test.go
ошибка Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
Кросс-компиляция в Go
Установка Go из исходного кода
cd $(go env GOROOT)/src # например /usr/local/go/
sudo su
export GOROOT_BOOTSTRAP=/usr/local/go/
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 ./make.bash --no-clean
скомпилируем локально
cd $HOME/dev/go/gobook/ch1/helloworld/
GOOS=windows GOARCH=386 go build -o hello.exe
GOOS=windows GOARCH=amd64 go build -o hello64.exe
скомпилируем из гитхаба
cd ../../../
env GOOS=windows GOARCH=amd64 go build gopl.io/ch1/helloworld
ls
Как собрать исполняемые файлы Go для нескольких платформ в Ubuntu 16.04
https://github.com/golang/go/wiki/WindowsCrossCompiling
cd $GOROOT/src
sudo -E GOOS=windows GOARCH=386 PATH=$PATH ./make.bash
Утилиты Go
http://www.admpub.com:8080/build-web-application-with-golang/ru/01.3.md
go build
Эта утилита компилирует тесты. По необходимости она также скомпилирует зависимости.
go clean
Эта команда удаляет все файлы, созданные компилятором, включая следующие:
_obj/ // старый каталог object, созданный Makefiles
_test/ // старый каталог test, созданный Makefiles
_testmain.go // старый каталог gotest, созданный Makefiles
test.out // старый каталог test, созданный Makefiles
build.out // старый каталог test, созданный Makefiles
*.[568ao] // объектные файлы, созданные Makefiles
DIR(.exe) // создано go build
DIR.test(.exe) // создано go test -c
MAINFILE(.exe) // создано go build MAINFILE.go
go fmt и gofmt
выполните команду go fmt <Имя файла>.go в терминале
go fmt - это алиас(сокращение) для gofmt -l -w для пакетов, указанных в пути команды import.
go install
Эта команда компилирует все пакеты, создает соответствующие файлы и перемещает их в $GOPATH/pkg или $GOPATH/bin.
go test
Эта команда загружает все файлы, чьи имена включают в себя *_test.go и создает исполняемые файлы тестов, а затем печатает на экране информацию
go get
Эта команда служит для установки удаленных пакетов
go get github.com/sbinet/igo
godoc
godoc net/http // ознакомиться с документацией по пакету http
Если Вам нужно больше деталей об отдельных функциях, выполните godoc fmt Printf и godoc -src fmt Printf, чтобы увидеть исходный код функции
go fix // делает апгрейд кода, написанного в версии, старее, чем go1 до новой версии (после go1)
go version // выдает информацию об установленной версии Go
go env // выдает информацию о переменных окружения Go
go list // перечисляет все установленные пакеты
go run // компилирует во временные файлы и запускает приложение
https://www.reddit.com/r/golang/comments/s6t1sf/go_build_go_mod_vendor/
go mod init // создает go.mod файл. Его следует запускать только при первом создании проекта.
go mod tidy // разрешает зависимости и загружает все, что еще не было загружено.
go mod vendor // сохраняет ваши зависимости с вашим проектом. (для локальной сборки без интернета)
go build // компилирует проект go.
https://github.com/pkg/errors
https://2ch.hk/pr/catalog.html#go
простейший сайт
загрузка файла на сервер
file, _, err := c.Request.FormFile("file")
зависимости при сборке пакета go
go mod vendor - добавляет директорию vendor в директорию с исходниками, кроме того в ~/go/pkg/mod остальные зависимости