這是我的示例代碼:
slice_of_string := strings.Split("root/alpha/belta", "/")
res1 := bytes.IndexAny(slice_of_string , "alpha")
我收到了這個錯誤
./prog.go:16:24: cannot use a (type []string) as type []byte in argument to bytes.IndexAny
這里的邏輯是當我輸入路徑和檔案夾名(或檔案名)時,我想知道該路徑中檔案夾名(或檔案名)的級別。
我這樣做:
- 將路徑拆分為陣列
- 獲取路徑中檔案夾名(或檔案名)的索引
如果索引為 0,則級別為 1,依此類推。
uj5u.com熱心網友回復:
您可能需要遍歷切片并找到您要查找的元素。
func main() {
path := "root/alpha/belta"
key := "alpha"
index := getIndexInPath(path, key)
fmt.Println(index)
}
func getIndexInPath(path string, key string) int {
parts := strings.Split(path, "/")
if len(parts) > 0 {
for i := len(parts) - 1; i >= 0; i-- {
if parts[i] == key {
return i
}
}
}
return -1
}
請注意,回圈是向后的,以解決 Burak Serdar 指出的邏輯問題,它可能會在其他路徑上失敗/a/a/a/a。
uj5u.com熱心網友回復:
如果strings.IndexAny要bytes.IndexAny對[]string.
uj5u.com熱心網友回復:
標準庫中沒有可用于在字串切片中搜索的內置函式,但如果對字串切片進行排序,則可以使用它sort.SearchStrings進行搜索。但是在未排序的字串切片的情況下,您必須使用 for 回圈來實作它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422114.html
標籤:
上一篇:記錄printf和寫入連接
下一篇:如何避免gorm的堆疊溢位?
