很抱歉這個菜鳥問題,但我不確定如何測試我正在訪問的元素是否對數(shù)組有效,請考慮以下人為代碼: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我顯然超出了界限,但我不確定如何進行測試以防止出現(xiàn)錯誤。我已經(jīng)習慣了在 PHP 中使用isset或!empty測試的地方,有沒有這樣的東西?我瀏覽了其他問題并看到了len使用的功能,但這似乎不起作用。
2 回答

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