こんにちは、kurumi-bioです。
第2回目のpathパッケージ(標準ライブラリー)の学習です。
前回の記事
APIリファレンス(過去記事の一覧)
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20.3 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.3 linux/amd64
IsAbs関数
func IsAbs(path string) bool
package main import ( "fmt" "path" ) func printIsAbs(pathString string) { fmt.Printf("[%s] -> [%t]\n", pathString, path.IsAbs(pathString)) } func main() { fmt.Println("\nドライブ名付き") printIsAbs("c:/test/test.bat") fmt.Println("\nドライブ名無し") printIsAbs("/test/test.bat") fmt.Println("\nフォルダ名から開始") printIsAbs("test/test.bat") fmt.Println("\nファイルのみ") printIsAbs("test.bat") fmt.Println("\n直下のファイル") printIsAbs("./test.bat") fmt.Println("\n/が二つ") printIsAbs("//test/test.bat") }
◆実行結果(Windows)
◆実行結果(Linux)
Join関数
func Join(elem ...string) string
package main import ( "fmt" "path" ) func printJoin(n ...string) { fmt.Printf("%s\n", path.Join(n...)) } func main() { printJoin("A", "B") fmt.Println("\nドライブ名付き") printJoin("C:", "test", "test.go") printJoin("C:", "test", "..", "test.go") printJoin("C:", "test", "/", "test.go") fmt.Println("\nドライブ名無し") printJoin("/", "test", "test.go") printJoin("/", "test", "..", "test.go") printJoin("/", "test", "/", "test.go") }
◆実行結果(Windows)
◆実行結果(Linux)
Match関数
func Match(pattern, name string) (matched bool, err error)
package main import ( "fmt" "path" ) func printMatch(p, n string) { b, e := path.Match(p, n) if e != nil { fmt.Printf("pattern=[%s] / name=[%s] / Match Error : %v\n", p, n, e) } else { fmt.Printf("pattern=[%s] / name=[%s] / matched=[%t]\n", p, n, b) } } func main() { fmt.Println("\n/以外の任意の文字列") printMatch("a*", "abc") printMatch("a*", "a*c") printMatch("a*", "a/c") printMatch("b*", "abc") fmt.Println("\n/以外の任意の文字列") printMatch("a?", "abc") printMatch("a??", "abc") fmt.Println("\n'範囲指定") printMatch("a[1-3]c", "a2c") printMatch("a[1-3]c", "a4c") printMatch("[a-c][x-z]", "by") printMatch("[a-c][x-z]", "dw") fmt.Println("\n'文字") printMatch("abc", "abc") printMatch("abc", "123") printMatch("a\\c", "a\\c") printMatch("a-c", "a-c") printMatch("a[c", "a[c") fmt.Println("\n'エスケープ文字") printMatch("a\\\\c", "a\\c") printMatch("a\\-c", "a-c") printMatch("a\\[c", "a[c") }
◆実行結果(Windows)
◆実行結果(Linux)
Split関数
func Split(path string) (dir, file string)
package main import ( "fmt" "path" ) func printSplit(p string) { d, f := path.Split(p) fmt.Printf("path=[%s] / dir=[%s] / file=[%s]\n", p, d, f) } func main() { fmt.Println("\nドライブ名付き、パス文字列が\\") printSplit("C:\\") printSplit("C:\\test.go") printSplit("C:\\temp\\test.go") printSplit("C:\\temp\\folder1\\test.go") fmt.Println("\nドライブ名付き") printSplit("C:/") printSplit("C:/test.go") printSplit("C:/temp/test.go") printSplit("C:/temp/folder1/test.go") fmt.Println("\nドライブ名無し") printSplit("/") printSplit("/test.go") printSplit("/temp/test.go") printSplit("/temp/folder1/test.go") printSplit("test.go") }
◆実行結果(Windows)
◆実行結果(Linux)
最後までご覧いただきありがとうございます