golangでコマンドラインツールを作る #2 ビルドしてコマンドを実行する
その1の続きです。
開発環境
早速開発してみる。まずは、開発環境を何にするか問題。 IDEはちょっと大変かなってことでatomでやってる人もいそうなので、それでやってみる。
を参考にとにかく入れてみる。go-plusのsettingsが出てこなかったけど再起動したらいけた。 多分syntaxハイライトできてるしよさそう。
開発の進め方
Go言語のインストール - golang.jpにのってたHow to Write Go Code - The Go Programming Languageに、go install
みたいなの書いてあるから開発したら、これで確認してくのかな?
ためしに、list.goに以下のようにimport文でfmtをimportしてみるように書いて保存すると、、強制的に元に戻される。なんじゃこりゃw
import( "fmt" )
書き方が間違ってるから強制的に元に戻っちゃうのかな?よくわからん。書き換えてないのに、go-plusのところにはwarningでてるし。
色々悩んでいてふとひらめいた。fmtを使ってないのに、fmtをimportしようとしてるからなんか整理されちゃってるんじゃないかって。
きっと、色々プラグイン入れたからうまいこと保存時にフォーマットされるようになってるんじゃないかと予想。ためしに、関数の中に、fmt.Println("")
ってのを書いておいたら大丈夫だった。
ふむ、余計なものをimportするなってことか。
あと、go-plusのエラーで exported function CmdList should have comment or be unexported
って出てる。
うーん。documentかけってことかなと思って色々javadoc的なもの書いてみても消えない。
waning messageに関数名から始めろみたいに書いてあるからまさかと思って、CmdListから始めてみたら・・
// CmdList print list func CmdList(c *cli.Context) {
warning消えたw
なんかわかってきたかも知れない。ためしに、list.goを以下のように書いてgo install
してみる。
package command import ( "fmt" "github.com/codegangsta/cli" ) // CmdList prints list func CmdList(c *cli.Context) { // Write your code here fmt.Println("hello world") }
そして、そのまま xgodeprojって打っても not foundになっちゃうから別シェル立ち上げて打ったら出てきた!
$ xgodeproj list hello world
よし、なんかいけそうだ。
ここまでの感想
Atomでやってみはじめたけど、予測変換出てくるし、gofmtがあるから勝手にそれっぽくしてくれる。
あとは、ビルド方法が go install
して別シェル立ち上げてってのがなんか面倒だな。きっともっといい方法あるんだろうな。
あと、テストをどう書けばいいか想像つかないけどそれは後回しにしよう。