2 回答

TA貢獻2011條經驗 獲得超2個贊
在訪問元素之前檢查切片的長度:
data := Address{}
s := strings.Split("street,city,zip", ",")
data.Street = s[0]
if len(s) > 1 {
data.City = s[1]
}
if len(s) > 2 {
data.ZipCode = s[2]
}
如果這種情況經常出現,那么寫一個簡單的幫助器函數:
func get(s []string, i int) string {
if i >= len(s) {
return ""
}
return s[i]
}
像這樣使用它:
data := Address{Street: get(s, 0), City: get(s, 1), ZipCode: get(s, 2)}

TA貢獻1821條經驗 獲得超5個贊
如果您寧愿使用稍微多一點的內存和更少的檢查,您也可以執(zhí)行以下操作:
s := strings.Split("street,city,zip", ",")
s = append(s, make([]string, 3 - len(s))...) // Change 3 to however many fields you expect
data := Address{Street: s[0], City: s[1], ZipCode: s[2]}
這樣做的作用是將空字符串追加到切片,以確保它始終具有正確數量的元素。游樂場示例:https://play.golang.org/p/Igj6yT5fffl
- 2 回答
- 0 關注
- 111 瀏覽
添加回答
舉報