Go замечательный язык программирования, который можно компилировать, компилировать под разные платформы(ARM, x86), распараллеливать. Он проще C/C++ и уже сформировавшийся язык в отличии от Rust который ломает программы с каждым обновлением. Область применения самая разная начиная от консольных утилит, всяких парсеров, системного, сетевого ПО, связи с физическими устройствами и заканчивая веб приложениями, разве что пока нету реализаций под смартфоны(android).
Если сравнивать с python то golang выигрывает в скорости, в многопоточных приложениях, там где требуется распространение через бинарники.
На Go уже написаны:
- Docker - система легковесных контейнеров (переписан с python)
- drone.io - система непрерывного тестирования, поддерживающая Docker(о ней я напишу отдельно скорее всего)
- и огромное количество других проектов, что удивительно ведь go очень молодой проект, а ещё гугл
Здесь я опишу процесс одной из возможных реализаций установки Go под Linux.
УСТАНОВКА
описано подробно в оф. документации http://golang.org/doc/install
Скачать архив и распаковать в ~/golang например:
tar -C ~/golang -xzf go1.2.1.linux-amd64.tar.gz
Добавляем в ~/.bashrc
# Go lang export GOROOT=$HOME/golang export PATH=$PATH:$GOROOT/bin
создаем файл hello.go
package main import "fmt" func main() { fmt.Printf("hello, world\n") }
и выполняем так
$ go run hello.go hello, world
или компилируем
$ go build hello.go
$ ./hello
hello, world
теперь у нас установлен go в системе. Если вам нужно свои пакеты хранить в другой директории(не $HOME/golang), но при этом что бы они находились в общем окружении, то можно задать переменную окружения GOPATH. У меня всё вместе выглядит так:
# Go lang export GOPATH=$HOME/Projects/go export GOROOT=$HOME/golang export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
VIM
есть много дополнений для go но самая крутое из них это https://github.com/fatih/vim-goпример .vimrc
au BufNewFile,BufRead *.go set ft=go nu au FileType go map <leader>r :!go run %<CR> Bundle "fatih/vim-go"
vim-go умеет:
- подсветка синтаксиса
- автодополнение кода
gocode
- автоформатирование кода через
gofmt
- автоимпорт недостающих библиотек
goimports
- проверять код на наличие ошибок с помощью
golint
- поддерживает снипеты
ultisnips
orneosnippet
- и многое другое
КНИГИ
книг много, но на великом только одна от издательства ДМК пресс, к счастью есть эл.вариант книги хоть и в pdf
Ресурсы
http://4gophers.com/ (ru)#go-nuts
in the irc.freenode.org network.http://blog.golang.org/
google group
AnyKey
Использование Си в Гоуhttp://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-with-swig/
ORM
https://github.com/eaigner/hood
https://github.com/jinzhu/gorm
Web
Revel
Gorilla
net/http
Список пакетов
https://code.google.com/p/go-wiki/wiki/Projects
Go для программистов C++
http://netsago.org/ru/docs/1/16/
http://eao197.narod.ru/desc/short_effective_go.html
Calling Go from Python via JSON-RPC
www.artima.com/weblogs/viewpost.jsp?thread=333589
Go для Python программистов
http://www.slideshare.net/kcherkasoff/go-for-pythonistas#
Тесты
http://smartystreets.github.io/goconvey/
Примеры
https://gobyexample.com/
CI
https://github.com/drone/drone
Хайлод++
http://www.youtube.com/watch?v=bqtN6XViejE
Туториал
http://tour.golang.org/
тот самый Марк )
ОтветитьУдалитьхоть и не обновляется уже, но все же: http://go-lang.cat-v.org/
http://talks.golang.org/2013/go4python.slide Go for Pythonistas (Francesc Campoy Flores Gopher at Google)
ОтветитьУдалитьОо, ссылочка на мой http://4gophers.com/ )) круто!
ОтветитьУдалитьЕсли есть желание написать статьи про гоу - буду рад опубликовать.
Есть один проект с сокет сервером под АРМ на C++, если он не умрет то перепишу на Go ну и статью сделаю. А сайт вообще нормальный, постоянно читаю рассылку.
Удалить