【Go】てきとーなコマンドラインツールを作ってみる


今週からお仕事でGoを使い始めた。といっても「A Tour of Go」を軽く流し読みした程度からのスタートだ。まあどんなプログラミング言語でも基本は一緒だから、なんとかなるっしょ。

とりあえずなんかテキトーな課題が無いと勉強になんないので、2つのファイルをぶちこんで簡易的に比較する処理でも作ってみる事にした。というか、Windowsだとcompだとかfcだとかのコマンドあるので、完全に車輪の再発明だけれども…

職場の環境がWindows縛りなので、一応それ向けに書いてみたつもり。

書き上がったソースコードは、下記のコマンドで一時的に動かすことができる。

go run filediff.go

あと、Windowsの実行形式(exe)に吐き出してから動かすこともできる。

go build

あ、これすっげえありがたい。Pythonみたいなスクリプト言語だと気軽に作れる反面、非エンジニアの人たちに配布できないのがネックだったのよね。そんな時はだいたいC#とかで作って配布する羽目になってたんだけど、Go言語のおかげで状況変わるかも。

OSの機能を使ってるポイントは「os.Args()」と「os.Exit()」の部分。Argsは2つめ以降がツールに渡される引数になる。今回の場合は

filediff.exe hoge.txt fuga.txt

みたいな感じでコマンドラインから渡したい。上記の例だと、Args[1]に「hoge.txt」、Args[2]に「fuga.txt」が入る。

あと、Jenkinsのジョブ内とかで成否を判定できるようにしておきたいので os.Exit() で終了コードを返すようにしてあげた。0が正常終了で、1が異常終了。ググったところによるとos.Exit() は defer とかの遅延処理をぶっ殺しちゃうので、一番外側というかmainに置いてあげるのが良いらしいゾ。

まだ全然使いこなせてないし、この程度の実装でもクッソ時間かかってるんだけども、触ってて楽しいのは間違いないので、しばらくPythonから浮気してみるかねー。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)