Skip to content

go

Go 1.18

WSLのGoのバージョンをあげて、GitHub Actionsのバージョン指定も1.18にしてみた。 問題なくCIが通ったので、大丈夫そう。

関数化

細かい変換を関数化してみた。 strconv.Atoiをエラーだったらデフォルト値で返すやつとか。 titleやtempoを[]byteにして返すやつとか。

メソッドか関数か

最初は、構造体のフィールドを参照しているものはメソッドにしていた。 けど、フィールドのごく一部しか使っていないものはメソッドではなく関数にして、疎結合な感じにしてみた。 もちろんフィールドを更新しているものはメソッドのほうが良いかもしれないが、それでも新しく構造体を生成して返すようにすれば必ずしもメソッ Read more

main関数を分けたのでテストも書く

mainのテストは、os.Argsを直接設定するという割と無理やりな書き方でテストしていたけれど、処理部分を別関数にしたので、引数を変えて正常系と異常系をテストし分けることができるようになった。

コマンドライン引数をflagで処理する

入力ファイルをos.Args[1]で取得していたので、引数指定しないと範囲外アクセスでpanicしていた。 flagパッケージ使ってflag.Arg(0)で取得するようにしたので、引数指定しなかった場合にはファイルなしエラーで終わるようになった。 もっと親切にするなら、エラー終了ではなくヘルプ表示にする Read more

Goのconst

EOTとか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で我慢する。

Goのinterfaceを学ぶ

golintのexported %s %s returns unexported type %s, which can be annoying to useを解消したい。 interfaceを定義して回避するのが一般的?らしい。 structが入れ子になっていて、内側のstructにメソッドが定義されていると、cannot call pointer methodとなり呼べない。 https://play.golang.org/p/yvWspYJnYSv pointerを返してあげれば良い。 https://play.golang.org/p/l_l4tMAD-Bd シング Read more

DeNA.go #3

https://dena.connpass.com/event/150676/ 19:25 - 19:30 会場説明 @imoty DeNA TechCon 2020やります 19:30 - 19:50 20分枠 @suhirotaka / [Go活用事例]安全運転支援サービスを支える運用サイト / オートモーティブ事業本部スマートドライビング部システム開発グループ https://speakerdeck.com/suhirotaka/gohuo-yong-shi-li-an-quan-yun-zhuan-zhi-yuan-sabisuwozhi-eru-yun-yong-guan-li-sisutemu goで何を作っているか DRIVE CHART AIはPython Railsも使っている 運用管理のWEBシステム 管理画面をGoで作った理由 2年 Read more

mercari.go

https://mercari.connpass.com/event/141122/ 19:40 ~ morikuni GopherCon 2019 GopherConとは 2014年デンバーで始まった。いろんなところでやっている。 今年はサンディエゴで開催 1800人を超える参加者 Mercariの関わり Silver Sponsor BOLD Scholarship 学生向け 11+2名参加 1日目はワークショップ 2日目3日目は発表がメイン 4日目はコミュニティデイ LTとか One MOre Thing Generics(Contracts) Interfaceと Read more