我有一種情況,我想檢查特定路徑是否位于特定目錄內(nèi)。我的第一直覺是做類似的事情filepath.HasPrefix(filepath.Clean(path), dir)但該程序filepath.HasPrefix被記錄為僅出于歷史原因而存在。我會通過使用獲得相同的效果strings.HasPrefix,還是我遺漏了什么?
3 回答

元芳怎么了
TA貢獻1798條經(jīng)驗 獲得超7個贊
你沒有遺漏任何東西,看看來源:
// 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)直接。

紅顏莎娜
TA貢獻1842條經(jīng)驗 獲得超13個贊
雖然您將獲得與 相同的功能strings.HasPrefix
,但它通常不起作用。filepath.HasPrefix
不推薦使用是有原因的,它的方法也應該被視為不推薦使用。
考慮filename=/foo/bar
和prefix=/fo
。這通過了strings.HasPrefix
測試,但顯然bar
不在/fo
.
正確的方法是從整體上比較每個目錄名稱。

慕神8447489
TA貢獻1780條經(jīng)驗 獲得超1個贊
在 Go 1.4 方法中filepath.HasPrefix
實際調(diào)用 strings.HasPrefix
所以答案是肯定的。
- 3 回答
- 0 關注
- 211 瀏覽
添加回答
舉報
0/150
提交
取消