Golang のかゆいところに手が届きそうで届かないライブラリを公開した
Golang を書いてて思うのは
- slice の操作が面倒 (Generics無いから、型ごとに書かないといけない)
- map のキーのみ、値のみの配列が欲しい
- error handling boilerplate
他にもいろいろあるけど。
とりあえず、自分が「今作ってて、あるといいな」と思ったヘルパーをまとめた。
たとえば、slice なら
array := []int{1, 2, 3, 4, 5} result := slice.Filter(array, func(i int) bool { return array[i]%2 == 1 }).([]int) // result == [1, 3, 5]
error handling なら
defer die.RevivalDetail(func(file string, line int, msg interface{}) { log.Printf("error: file=%s, line=%d, msg=%v", file, line, msg) }) r, err := os.Open("hoge") die.IfErr(err) defer r.Close() buf := make([]byte, 10000) n, err := r.Read(buf) die.IfErr(err)
このように、簡潔に書けるようになる。
内部的には reflect / interface{}
つかったり panic() / recover()
つかったりしているので、動作は遅めです。