在 Golang 中使用 filepath
包来处理路径问题,其中有一个函数叫做 filepath.Clean()
可以将一个路径标准化处理。然后我们可以直接通过字符串比较的方式判断两个路径是否相等。
示例代码:
package main
import (
"fmt"
"path/filepath"
"strings"
)
func isEqualPath(p1, p2 string) bool {
// 将路径标准化处理
p1 = filepath.Clean(p1)
p2 = filepath.Clean(p2)
// 对于 Windows 平台,忽略大小写
if strings.HasPrefix(p1, "C:") && strings.HasPrefix(p2, "C:") {
return strings.EqualFold(p1, p2)
}
// 直接比较两个路径
return p1 == p2
}
func main() {
fmt.Println(isEqualPath("c:\\abc", "c:/ABC")) // true
fmt.Println(isEqualPath("/root/dir", "/ROOT/DIR")) // true
fmt.Println(isEqualPath("/path/to/file.txt", "/path/to/folder/")) // false
}
注意:Windows 平台需要忽略路径的大小写,因此需要使用 strings.EqualFold()
函数进行比较。其他平台则不需要。