golang 每日一练 path包使用

path实现了对斜杠分隔的路径的实用操作函数。


func IsAbs(path string) bool

IsAbs返回路径是否是一个绝对路径。


func Split(path string) (dir, file string)

Split函数将路径从最后一个斜杠后面位置分隔为两个部分(dir和file)并返回。


func Join(elem ...string) string

Join函数可以将任意数量的路径元素放入一个单一路径里,会根据需要添加斜杠。结果是经过简化的,所有的空字符串元素会被忽略。


func Dir(path string) string

Dir返回路径除去最后一个路径元素的部分,即该路径最后一个元素所在的目录。


func Ext(path string) string

Ext函数返回path文件扩展名。


func Clean(path string) string

Clean函数通过单纯的词法操作返回和path代表同一地址的最短路径。


func Match(pattern, name string) (matched bool, err error)

如果name匹配shell文件名模式匹配字符串,Match函数返回真。




func main() {
pathStr := "/data/script/go"
      //返回路径是否是一个绝对路径
      //打印 true
      fmt.Println(path.IsAbs(pathStr))

//Split函数将路径从最后一个斜杠后面位置分隔为两个部分(dir和file)并返回
      //打印 /data/script/go/ 1.go
      pathStr = "/data/script/go/1.go"
      fmt.Println(path.Split(pathStr))
//打印 /data/script/go/     (file为空字符串)
      pathStr = "/data/script/go/"
      fmt.Println(path.Split(pathStr))
pathStr = "1.go"
      //打印 (dir为空字符串)  1.go
      fmt.Println(path.Split(pathStr))

//Join函数可以将任意数量的路径元素放入一个单一路径里,会根据需要添加斜杠。
      //打印 a/b/c
      fmt.Println(path.Join("a","b","c"))

fmt.Println("--------------------")
//Dir返回路径除去最后一个路径元素的部分,即该路径最后一个元素所在的目录。
      //打印 /data/script/go
      pathStr = "/data/script/go/1.go"
      fmt.Println(path.Dir(pathStr))
//打印 /data/script/go
      pathStr = "/data/script/go/"
      fmt.Println(path.Dir(pathStr))
//打印 .
      pathStr = "1.go"
      fmt.Println(path.Dir(pathStr))

fmt.Println("--------------------")
//Base函数返回路径的最后一个元素。在提取元素前会求掉末尾的斜杠。如果路径是"",会返回".";如果路径是只有一个斜杆构成,会返回"/"。
      pathStr = "/data/script/go/1.go"
      //打印 1.go
      fmt.Println(path.Base(pathStr))
pathStr = "/data/script/go/"
      //打印 go
      fmt.Println(path.Base(pathStr))
pathStr = "/"
      //打印 /
      fmt.Println(path.Base(pathStr))
pathStr = ""
      //打印 .
      fmt.Println(path.Base(pathStr))

fmt.Println("--------------------")
//Ext函数返回path文件扩展名。
      pathStr = "/data/script/go/1.go"
      //打印 go
      fmt.Println(path.Ext(pathStr))
pathStr = "/data/script/go/"
      //打印 空字符串
      fmt.Println(path.Ext(pathStr))
pathStr = ""
      //打印 空字符串
      fmt.Println(path.Ext(pathStr))

fmt.Println("--------------------")
//Clean函数通过单纯的词法操作返回和path代表同一地址的最短路径
      pathStr = "/data//script//1.go"
      //将连续的多个斜杠替换为单个斜杠
      //打印/data/script/1.go
      fmt.Println(path.Clean(pathStr))
pathStr = "./data/./script//1.go"
      //剔除每一个.路径名元素(代表当前目录)
      //data/script/1.go
      fmt.Println(path.Clean(pathStr))
pathStr = "../data/../script/1.go"
      //剔除每一个路径内的..路径名元素(代表父目录)和它前面的非..路径名元素
      //打印 ../script/1.go
      fmt.Println(path.Clean(pathStr))
pathStr = "/../data/script/1.go"
      //剔除开始一个根路径的..路径名元素,即将路径开始处的"/.."替换为"/"
      //打印 /data/script/1.go
      fmt.Println(path.Clean(pathStr))

//Math 如果name匹配shell文件名模式匹配字符串,Match函数返回真。
      fmt.Println("--------------------")
pathStr = "/data/script/1.go"
      //打印 true
      fmt.Println(path.Match("/data/script/*",pathStr))
pathStr = "/data/script/1.go"
      //打印 true
      fmt.Println(path.Match("/data/script/1.??",pathStr))
pathStr = "/data/script/1.go"
      //打印true
      fmt.Println(path.Match("/data/script/1.g[o]",pathStr))

}



在线交流