いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-457 (flagパッケージ再入門)(04-Func)

関連記事

Goメモ-454 (flagパッケージ再入門)(01-FlagSet) - いろいろ備忘録日記

Goメモ-455 (flagパッケージ再入門)(02-Var) - いろいろ備忘録日記

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

最近、flaggy とかを利用していて、あまりflagパッケージを触らなくなってきているのですが

小さなツールをちゃちゃっとワンタイムで利用するときは、やっぱり使ったりします。

使っていないと忘れてしまいそうなので、ここに自分の備忘録として残しておこうと思います。

今回は、flag.Func()について。

flag.Func() は、func(string) error の関数を設定することで任意の処理を行うことが出来る関数です。

独自の処理を挟みたい時に使えます。

サンプル

package flags

import (
    "flag"
    "strings"

    "github.com/devlights/gomy/output"
)

// Func は、flag.Func() のサンプルです.
//
// flag.Func() は、func(string) error の関数を設定することで
// 任意の処理を行うことが出来る関数です。
//
// # REFERENCES
//   - https://pkg.go.dev/flag@go1.22.4#Func
func Func() error {
    var (
        hs []string
        fs = flag.NewFlagSet("", flag.ExitOnError)
    )

    fs.Func("hosts", "host names. comma separated.", func(v string) error {
        hs = strings.Split(v, ",")
        return nil
    })

    fs.Parse([]string{"-hosts", "example.invalid,my.local,localhost"})

    for _, h := range hs {
        output.Stdoutl("[h]", h)
    }

    return nil

    /*
       $ task
       task: [build] go build .
       task: [run] ./try-golang -onetime

       ENTER EXAMPLE NAME: flags_func

       [Name] "flags_func"
       [h]                  example.invalid
       [h]                  my.local
       [h]                  localhost


       [Elapsed] 42.06µs
   */

}

参考情報

Goメモ-428 (flaggyメモ)(01) - いろいろ備忘録日記

Goメモ-429 (flaggyメモ)(02) - いろいろ備忘録日記

Goメモ-430 (flaggyメモ)(03) - いろいろ備忘録日記

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。