Gopher道場 自習室 課題をやってみた
Go言語 そのものの力を伸ばしたいと思って メルカリのtenntennさんが開催しているGopher道場の課題に挑戦してみました。
課題1では画像形式を変更するコマンドラインを作成します。 今回はその時使ったパッケージや気づきを紹介したいと思います。 車輪の再発明ですが知識の定着を目的にアウトプットしたいと思います。
flag パッケージ
以下のよう書くことでフラグを定義することができる。
var ( flag1 = flag.String("flag1", "defaultFlag", "usage") flag2 = flag.Bool("flag2", false, "usage") ) func main() { flag.Parse() fmt.Println(*flag1, *flag2) }
flag.Args()ではコマンドラインから引数を取得できる。
func main() {
flag.Parse()
args := flag.Args()
fmt.Println(args)
}
CLIを作成する時にコマンドをいい感じに扱える。
サードパーティと比較している面白い記事があったが、サードパーティを使用しているライブラリも多いみたいだ。
path/filepath パッケージ
ファイルのパスを操作することができる。
IsAbs() 絶対パスかどうか真偽値を返す
isAbs := failePath.IsAbs(path)
absPath, err := filepath.Abs(path)
Ext() ファイルパスから拡張子を返す
ext := filepath.Ext(fileName)
Walk() 第1引数で指定したパス以下に第二引数の関数を実行していく。
err := filepath.Walk(c.srcDirPath, func(path string, info os.FileInfo, err error) error { fmt.Println(path) return nil })
Join() パスを連結する
filepath.Join("hoge", "huga") // hoge/fuga
os パッケージ
os機能
MkdirAll()
新しいディレクトリを作るメソッド 第1引数には ディレクトリ名、第2引数はパーミッションを指定する
os.MkdirAll(newFileDirName, 0777)
image パッケージ
Decode() image.Image型にデコード
image.Decode(file)
Encode() image.Image型をエンコードする
jpeg.Encode(newfile, img) png.Encode(newfile, img)
以上 ざっと課題に使ったパッケージやメソッドを復習してみました。
さいごに
普段 BtoC webシステムを開発していてCLIやファイルシステムをあまり意識していないので、大変勉強になりました。 標準パッケージ縛りというのもよかったですね。
課題は4まであるのと、その先には昇段試験もあるので挑戦していきたいと思います。
最後に、 このブログではweb開発について発信していくのでまたご覧頂けると嬉しいです。 最後までお読み頂きありがとうございました。