概要
Golangをはじめるためにローカルの環境を整える
いつもどおりDockerに固めちゃろって思ってたけど、 $ go get
やら $GOPATH
やらが面倒そうなのと最近 $ go get
を要求されることが度々あるのでこの際ローカルに直接。
構築する環境
dotfilesの対象commit
Golangの入手
brewでも入るしこっちでも良い気がするけど、書くならバージョン変えたい欲求が出てくるだろうしバージョン管理ツールを導入する。
2つほどあるみたいだけどスター数の多いgvmを採用
gvmでgolangの導入
$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) $ gvm install go1.10.1 -B $ gvm use go1.10.1 --default
-B
はバイナリでインストールする指定。
バイナリじゃないとインストールのステップが増えたり、そもそもできなかったりした。
GOPATHなど
雑に ~/.go
を指定。
コード書くようになったらディレクトリ構成の問題でghqを噛ませるなどしたほうが良さそうなので様子見。
spacemacsへgo layerの追加
最近emacsからspacemacsへ移行した。
これは別の記事で書こうと思うけど大きな理由としてlayer機能による設定の簡略化だ。
例えば言語の設定などはemacsの場合ベストプラクティスを探すところから始まるが、spacemacsの場合設定ファイルに一行 go
とかくだけで終わる。最高。
まあ終わらないんですけどね。
.spacemacsの設定
.spacemacsを編集する前にまずgo layerが要求各種ツール群を導入する。
go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v golang.org/x/tools/cmd/guru go get -u -v golang.org/x/tools/cmd/gorename go get -u -v golang.org/x/tools/cmd/goimports
補完もしたいので dotspacemacs-additional-packages
へ go-autocomplete
追加。
最後にlayerの設定。
dotspacemacs-configuration-layers '( ;; auto-completion ;; なければ追加 go (go :variables go-autocomplete t go-use-gometalinter t go-tab-width 2 gofmt-command "goimports") )
雑記
go-modeでhookやら変数やらを変えたかったもののずっとできなかった。
結論としてはemacsライクな(init.el内で書くような)構文じゃできず、 (go :variables
〜 )
の間に変数を書く必要があった。
ここに盛大にハマってしい土日が飛ぶなど。
流石にデフォルトのタブ幅8 はきびしひ