関連記事
Goメモ-454 (flagパッケージ再入門)(01-FlagSet) - いろいろ備忘録日記
Goメモ-455 (flagパッケージ再入門)(02-Var) - いろいろ備忘録日記
Goメモ-456 (flagパッケージ再入門)(03-Duration) - いろいろ備忘録日記
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにメモメモ。。。
最近、flaggy とかを利用していて、あまりflagパッケージを触らなくなってきているのですが
小さなツールをちゃちゃっとワンタイムで利用するときは、やっぱり使ったりします。
使っていないと忘れてしまいそうなので、ここに自分の備忘録として残しておこうと思います。
今回は、flag.TextVar()について。
flag.TextVar() は、Go 1.19 で追加された関数です。encoding.TextUnmarshaler を実装している型を指定出来ます。
encoding.TextUnmarshaler を実装しているものとして以下のものがあります。
- time.Time
- net.IP
- net.URL
サンプル
package flags import ( "flag" "net" "time" "github.com/devlights/gomy/output" ) // TextVar は、 flag.TextVar() のサンプルです. // // flag.TextVar() は、Go 1.19 で追加された関数です。 // encoding.TextUnmarshaler を実装している型を指定出来ます。 // // encoding.TextUnmarshaler を実装しているものとして以下のものがあります。 // // - time.Time // - net.IP // - url.URL // // # REFERENCES // - https://pkg.go.dev/flag@go1.22.4#TextVar func TextVar() error { var ( fs = flag.NewFlagSet("", flag.ExitOnError) tm time.Time ip net.IP ) fs.TextVar(&tm, "time", time.Unix(0, 0), "time") fs.TextVar(&ip, "ip", net.IPv4(127, 0, 0, 1), "ip addr") // 時刻表記の末尾の Z はUTCを表す fs.Parse([]string{"-time", "2024-01-02T03:04:05Z", "-ip", "192.168.149.111"}) tz, _ := time.LoadLocation("Asia/Tokyo") output.Stdoutf("[time]", "UTC=%s\tJST=%s\n", tm, tm.In(tz)) output.Stdoutl("[ip ]", ip) return nil /* $ task task: [build] go build . task: [run] ./try-golang -onetime ENTER EXAMPLE NAME: flags_textvar [Name] "flags_textvar" [time] UTC=2024-01-02 03:04:05 +0000 UTC JST=2024-01-02 12:04:05 +0900 JST [ip ] 192.168.149.111 [Elapsed] 152.56µs */ }
参考情報
Goメモ-428 (flaggyメモ)(01) - いろいろ備忘録日記
Goメモ-429 (flaggyメモ)(02) - いろいろ備忘録日記
Goメモ-430 (flaggyメモ)(03) - いろいろ備忘録日記
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。