我有一种情况,我想检查特定路径是否落在特定目录中。我的第一直觉是做
之类的事情filepath.HasPrefix(filepath.Clean(path), dir)
但是filepath.HasPrefix
程序是documented as existing for historic reasons only。我是否会使用strings.HasPrefix
获得同样的效果,或者我有什么遗失?
答案 0 :(得分:4)
你没有遗漏任何东西,看看来源:
// HasPrefix exists for historical compatibility and should not be used.
func HasPrefix(p, prefix string) bool {
return strings.HasPrefix(p, prefix)
}
直接使用strings.HasPrefix(p, prefix)
。
答案 1 :(得分:1)
在Go 1.4方法filepath.HasPrefix
actually calls strings.HasPrefix
中,答案是肯定的。
答案 2 :(得分:0)
虽然您将获得与strings.HasPrefix
相同的功能,但通常无法正常工作。 filepath.HasPrefix
之所以被弃用是有原因的,它的方法也应被视为不赞成使用。
考虑filename=/foo/bar
和prefix=/fo
。这通过了strings.HasPrefix
测试,但显然bar
不在/fo
中。
正确的方法是整体比较每个目录名称。