パラボラアンテナと星の日記

あることないこと

【Go初心者】麻雀のあがり判定をRubyで書いたやつをGoで書きなおしてみた、そして多少のvimrc追加

天和あがれるやつをGoで書きなおしてみました。

f:id:hoppie:20160103103539g:plain

処理速度は超早くなりました。当社比2000%。

成長の記録(のびしろですね!)。

github.com

Go書くのは人生初です。

CもJavaも書いたことなくて、rubyしか書いたことないのですが、

forとifさえあればなんとかなるという感じでやった。後悔はしていない。

インターフェースとか書けるのが嬉しいらしいっぽい、時間あるときに学びたい。

以下、初心者がGoはじめるにあたり環境周りでやったことなど。

vim周り1

golang vimrcでググッて適当に調べただけで、べんりなものがあった。

.vimrcへ以下を追記。 事前にnsf/gocodeをgo getしておく。

+
+" http://qiita.com/uchiko/items/4c186292f007535116cc
+filetype off
+filetype plugin indent off
+" set runtimepath+=$GOROOT/misc/vim
+filetype plugin indent on
+syntax on
+autocmd FileType go autocmd BufWritePre <buffer> Fmt
+exe "set rtp+=".globpath($GOPATH, "src/github.com/nsf/gocode/vim")
+set completeopt=menu,preview

vim周り2

golangといえばハードタブ。

私のvimrcではC-iはソフトタブが挿入されちゃう感じだったので、拡張子で判断できるように変更。

+
+" http://blog.restartr.com/2014/04/20/vimrc-noexpandtab-in-golang/
+if expand("%:t") =~ ".*\.go"
+  set noexpandtab
+  set tabstop=4
+  set shiftwidth=4
+endif

以上2つの変更で、:wで保存した時に自動的にgo fmt的なのが走る感じになる。

go、pythonなんて比じゃないぐらい固い言語という印象を持った。

Go書けるようになりたい!

いまのところまだよくわかってないところ箇条書き:

  • なぞの「interface」
    • ダックタイピングできるらしい
  • なぞの「goroutine」
    • 並列処理書きたい
  • テスト
    • テストフレームワークがないのはわかった、どういう感じで書くのがいいんだろう