cli昔にも似たような記事を書いていたみたいだった。最近のgoでのCLIツールを書く際の心境の変化があったのでその辺をメモしておく。心境の変化は2つコマンドラインオプションをstructで囲む理由が特になくなったサブコマンドがやっぱりほしいコマンドラインオプションをstructで囲む理由が特になくなった昔はわざわざコマンドラインオプションをstructで囲んで、Run()関数に渡していたのだけれど。そもそもRun()関数が長々と書かれていたらそれはmain.goの記述が長すぎる。一度しか使われないものはグローバル変数で良いということでグローバルの変数としてポインタを保持する形式になった。Run()に対して引数として渡す必要もなくて、dereferenceしてあげればおしまい。それ以前の段階で引数のvalidationは通っているはずなので。Run()がエラー値を返すのはそのまま。サブコマンドがやっぱりほしいサブコマンドのものとコマンドが1つだけのものをほとんど同様の記述で書きたい。いうわけで少し不思議なコードになっている。以下の様な感じで書く。kingpinを使うのは惰性なので他のライブラリが便利ならそれを使っても良い。pathにhackが入っているけれどその辺りは読み替えてほしい)サブコマンドを定義するときにはだいたい以下の様な構造にしている。何も考えずにパッケージを分けちゃったほうがあとあと楽という結論になった。v2.2.6)ポイントはサブコマンドとしての定義とそうではない場合の1つのコマンドとしての定義の記述が概ね同じような形になるようにしている点。あと気持ちの問題でヘルプメッセージに色を付けている。runは以下の様にして使う。何も考えずにgoimportsで補完された結果のコードを残しておいた...2018-04-03handwritingでfizzbuzz(handwritingは自作のパッケージ。どこかで説明)...2018-03-17最近goでCLIのコマンドを作るときの雛形のメモたまにどう書くか忘れて調べたりするので自分用の雛形をメモし...2018-03-03goのコードの改行の情報はASTには含まれず、token.FileSetに格納されているという話ASTを触る際にコメントの取扱いがだるいと一部で話題ですが。componentという機能を追加した月別アーカイブはてなブログをはじめよう!podhmoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。