Go 1.18
WSLのGoのバージョンをあげて、GitHub Actionsのバージョン指定も1.18にしてみた。
問題なくCIが通ったので、大丈夫そう。
POSTS
WSLのGoのバージョンをあげて、GitHub Actionsのバージョン指定も1.18にしてみた。
問題なくCIが通ったので、大丈夫そう。
細かい変換を関数化してみた。
strconv.Atoi
をエラーだったらデフォルト値で返すやつとか。
titleやtempoを[]byteにして返すやつとか。
mainのテストは、os.Argsを直接設定するという割と無理やりな書き方でテストしていたけれど、処理部分を別関数にしたので、引数を変えて正常系と異常系をテストし分けることができるようになった。
Rust版でやっているように、main関数から処理を分離してrun関数を作ってみた。
入力ファイルをos.Args[1]
で取得していたので、引数指定しないと範囲外アクセスでpanicしていた。
flagパッケージ使ってflag.Arg(0)
で取得するようにしたので、引数指定しなかった場合にはファイルなしエラーで終わるようになった。
もっと親切にするなら、エラー終了ではなくヘルプ表示にするのが良いのだろうけど、それはまた余裕があるときにでも。
Read moreEOTとかbyteのスライスをconstで定義しようとしてできなかった。
const EOT = []byte{0x00, 0xFF, 0x2F, 0x00}
$ go run cmd/mdmml/main.go
# github.com/umemak/mdmml
./mdmml.go:10:7: const initializer []byte{...} is not a constant
The Go Programming Language Specification - The Go Programming Language
文字列リテラルが許されるならbyteスライスも許されてもよいではないかと思ったけれど、ダメらしい。 varで我慢する。
exported %s %s returns unexported type %s, which can be annoying to use
を解消したい。cannot call pointer method
となり呼べない。https://dena.connpass.com/event/150676/
https://mercari.connpass.com/event/141122/