関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにメモメモ。。。
Goの標準ライブラリに搭載されている filepath.Glob 関数さんは ** に対応していません。filepath.Walk 使えば良いのですがGlob関数でパパっとやりたいときもあります。
何か無いのかなって探してみたら以下のライブラリを発見。
目的にぴったりなライブラリでしたので、ベーシックな使い方を自分用にメモメモ。。。
サンプル
package main import ( "fmt" "os" "path/filepath" "slices" "github.com/bmatcuk/doublestar/v4" ) func main() { const ( BaseDir = "../../../../" // try-golang-extlib project root-dir ) var ( basepath string pattern = filepath.Join(BaseDir, "**/main.go") ) basepath, pattern = doublestar.SplitPattern(pattern) fmt.Printf("base: %s, pattern: %s\n", basepath, pattern) var ( dirFs = os.DirFS(basepath) matches []string err error ) matches, err = doublestar.Glob(dirFs, pattern) if err != nil { panic(err) } fmt.Printf("match count: %d\n", len(matches)) for v := range slices.Values(matches) { fmt.Printf("\t%s\n", v) } }
実行すると以下のようになります。
$ task task: [default] go run main.go base: ../../../.., pattern: **/main.go match count: 39 cmd/trygolang-extlib/main.go examples/etree/read/main.go examples/etree/write/main.go examples/gobit/main.go examples/singleapp/7zip/read-sevenzip/main.go examples/singleapp/currency/01.basic/main.go examples/singleapp/doublestar/01.basic/main.go examples/singleapp/env/01.basic/main.go examples/singleapp/env/02.required/main.go examples/singleapp/env/03.all-fields-required/main.go examples/singleapp/env/04.use-fieldname-by-default/main.go examples/singleapp/env/05.default-value/main.go examples/singleapp/env/06.value-separator/main.go examples/singleapp/env/07.expand/main.go examples/singleapp/env/08.not-empty/main.go examples/singleapp/env/09.from-file/main.go examples/singleapp/flaggy/01.basic/main.go examples/singleapp/flaggy/02.subcommand/main.go examples/singleapp/flaggy/03.nested-subcommand/main.go examples/singleapp/godotenv/01.basic/main.go examples/singleapp/godotenv/02.autoload/main.go examples/singleapp/godotenv/03.specify-filename/main.go examples/singleapp/godotenv/04.read/main.go examples/singleapp/godump/basic/main.go examples/singleapp/isatty/main.go examples/singleapp/jstream/depth/main.go examples/singleapp/panicparse/main.go examples/singleapp/pdf/01.split-pages/main.go examples/singleapp/pdf/02.search-text/main.go examples/singleapp/semver/basic/main.go examples/singleapp/semver/check/main.go examples/singleapp/semver/parse/main.go examples/singleapp/semver/sort/main.go examples/singleapp/slimsprig/load/main.go examples/singleapp/spinner/01.basic/main.go examples/singleapp/spinner/02.color/main.go examples/singleapp/spinner/03.suffix/main.go examples/singleapp/spinner/04.final-message/main.go examples/singleapp/spinner/05.styles/main.go
参考情報
個人的Goのおすすめ書籍
個人的に読んでとても勉強になった書籍さんたちです。
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。






