Apr 06, 2014
Go, vim

Пишем на Go (Golang)

../../../_images/go.png

Go замечательный язык программирования, который можно компилировать, компилировать под разные платформы (ARM, x86), распараллеливать. Он проще C/C++ и уже сформировавшийся язык в отличии от Rust который ломает программы с каждым обновлением. Область применения самая разная начиная от консольных утилит, всяких парсеров, системного, сетевого ПО, связи с физическими устройствами и заканчивая веб приложениями, разве что пока нету реализаций под смартфоны (android).


На Go уже написаны:

  • Docker - система легковесных контейнеров (переписан с python)
  • http://drone.io - система непрерывного тестирования, поддерживающая Docker (о ней я напишу отдельно скорее всего) и огромное количество других проектов, что удивительно ведь go очень молодой проект, а ещё гугл

Здесь я опишу процесс одной из возможных реализаций установки Go под Linux.

УСТАНОВКА

См.также

Более простой способ moovweb/gvm

описано подробно в оф. документации http://golang.org/doc/install
Скачать архив и распаковать в ~/golang например:

$ tar -C ~/golang -xzf go1.2.1.linux-amd64.tar.gz

Добавляем в ~/.bashrc:

~/.bashrc
# Go lang
export GOROOT=$HOME/golang
export PATH=$PATH:$GOROOT/bin

создаем файл hello.go:

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 or neosnippet
  • и многое другое

КНИГИ

книг много, но на великом только одна от издательства ДМК пресс, к счастью есть эл.вариант книги хоть и в pdf.

../../../_images/go_book.jpg

Ресурсы

#go-nuts in the irc.freenode.org network.
google group
reddit

AnyKey

Использование Си в Гоу

ORM

Web
Revel
Gorilla
net/http

Список пакетов

Go для программистов C++


Calling Go from Python via JSON-RPC
www.artima.com/weblogs/viewpost.jsp?thread=333589

Go для Python программистов

Тесты

Примеры

CI

Хайлод++

Туториал

../../../_images/gopher.png

Comments

comments powered by Disqus