很抱歉這個菜鳥問題,但我不確定如何測試我正在訪問的元素是否對數組有效,請考慮以下人為代碼:func main() { strings := []string{"abc", "def", "ghi", "jkl"} for i := 0; i<5; i++ { if strings[i] { fmt.Println(strings[i]) } }}https://play.golang.org/p/8QjGadu6Fu我顯然超出了界限,但我不確定如何進行測試以防止出現錯誤。我已經習慣了在 PHP 中使用isset或!empty測試的地方,有沒有這樣的東西?我瀏覽了其他問題并看到了len使用的功能,但這似乎不起作用。
2 回答

慕少森
TA貢獻2019條經驗 獲得超9個贊
在 Go 中,這不像在 PHP 中那么容易 - 但請記住,在 PHP 中這很簡單,因為“索引”數組實際上是引擎蓋下的關聯數組。否則,您將無法通過取消設置單個元素在數組中“打孔”。
使用 Go 數組/切片,您必須實際檢查數組的長度,如您所寫:
if i>=0 && i<len(strings) {...}
就我個人而言,我還沒有遇到過需要這樣做的現實情況 - 在您的示例中,您可以使用range(strings)
索引并不再擔心索引。
使用映射(相當于 PHP 數組的 Go 等價物),您可以通過編寫以下代碼來執行“isset”:
value, isset := map[index]
如果index
存在于地圖中,value
將被適當設置并且isset
為真;如果不是,value
將被設置為地圖類型的零值并且isset
為假。
- 2 回答
- 0 關注
- 245 瀏覽
添加回答
舉報
0/150
提交
取消