go で同じ flag を slice で受け取る
たまに go で同じ flag を slice で受け取りたくなるので書いた
こんな感じで使う。
var ( strs = sliceflag.String(flag.CommandLine, "str", []string{}, "str") ) func main() { flag.Parse() log.Println(*strs) }
$ go run main.go ---str aaa --str bbb
flag package には Value という interface があって、Set(string) error
と String() string
を実装されてれば良いので、slice のポインタを返して、中では その slice に append するという感じになっている。 bool 以外の flag で提供されてるやつをひとまず実装した。