WindowsでGolang開発環境構築¶
Golangインストール¶
インストーラー をダウンロードしてインストール(C:Go)
環境変数設定¶
以下の環境変数を追加
- GOROOT
C:\Go
- GOPATH
C:\Go\goprojects
- PATH
%GOROOT%\bin;%GOPATH%\bin
GOROOTはGolangをインストールした場所、GOPATHはユーザーのワーキングディレクトリ(好きな場所で良い)を指定。
セットアップできたら動作確認をする。
$ go version
go version go1.6 windows/amd64
Vim設定¶
GolangはAtom, Eclipse, Emacs, Gedit, IntelliJ IDEA, LiteIDE, Notepad++, SublimeText, VisualStudio(Code)と様々なエディタ、IDEでサポートされていますが、ここではVimを使います。
インデントの設定¶
Golangはハードタブなのでvimrcに下記を設定 ~/.vim/after/ftplugin/<filetype>.vimに書くことでFileTypeごとの設定を記述できる.
" .vim/after/ftplugin/go.vim
set noexpandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
わざわざファイルを新しく用意するのが面倒という人はvimrcに以下のように書くといい。記述している内容は一緒だ。
" vimrc
autocmd FileType go setl ts=4 sw=4 sts=4 noet
プラグイン導入¶
fatih/vim-go をお好みのPluginManagerでインストール(ここでは Shougo/dein.vim を使用)
" vimrcに記述する場合
call dein#add('fatih/vim-go', {'on_ft': 'go'})
# tomlに記述する場合
[[plugins]]
repo = 'fatih/vim-go'
on_ft = 'go'
コード補完やSyntaxHighlightを有効にするには下記をvimrcに記載するのをお忘れなく。
" vimrc
filetype plugin indent on
syntax on
設定ファイルに記述しプラグインをインストールしたら、vimのコマンドラインより下記のコマンドを叩く。
:GoInstallBinaries
2016-05-16時点でfatih/vim-goを導入すると下記がインストールされる。
asmfmt.exe
errcheck.exe
gocode.exe
godef.exe
gogetdoc.exe
goimports.exe
golint.exe
gometalinter.exe
gorename.exe
gotags.exe
guru.exe
impl.exe
motion.exe
oracle.exe
自分のvimrcをご覧になりたい方は こちら
Hello, Golang World!¶
プログラムを書いてみる。 コード補完(<C-x><C-o>)やリントツール、フォーマッタなど豊富なサポートが得られることが確認できる。
package main
import "fmt"
func main() {
fmt.Printf("Hello, Golang world!\n")
}
$ go run hello.go
Hello, Golang world!
おまけ¶
よくag(the_silver_searcher)を使ってgrepを高速実行しようという記事が見受けられるが、ここではGolang製の mattn/jvgrep を使ってみる。 動作が高速でマルチエンコーディングに対応しており、Windowsでのインストールも簡単なので入れておいて損はない。
$ go get github.com/mattn/jvgrep
" vimrcに記述
if executable('jvgrep')
set grepprg=jvgrep
endif
Shougo/unite.vim のgrep処理でもjvgrepを使用できるよう設定できるので、興味がある人は設定してみるといいかもしれない。
" vimrcに記述
if executable('jvgrep')
let g:unite_source_grep_command = 'jvgrep'
let g:unite_source_grep_default_opts = '-i --exclude ""\.(git|svn|hg|bzr)""'
let g:unite_source_grep_recursive_opt = '-R'
endif