很抱歉这个noob问题,但我不确定我如何测试我正在访问的元素是否对数组有效,请考虑以下设计代码:
func main() {
strings := []string{"abc", "def", "ghi", "jkl"}
for i := 0; i<5; i++ {
if strings[i] {
fmt.Println(strings[i])
}
}
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/8QjGadu6Fu
我显然超出了界限,但我不确定如何测试以防止错误.我已经习惯了PHP,我会使用isset
或!empty
测试,有没有这样的事情?
我已经浏览了其他问题并看到了len
所使用的功能,但这似乎不起作用.
rob*_*b74 26
在Go中,这并不像在PHP中那么容易 - 但请记住,在PHP中它很容易,因为"索引"数组实际上是关联数组.否则,您将无法通过取消设置单个元素来"打孔".
使用Go数组/切片,您必须实际检查数组的长度,如您所写:
if i>=0 && i<len(strings) {...}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我还没有遇到需要这样做的现实生活情况 - 在你的例子中,你可以使用range(strings)
并停止担心索引.
使用映射,即Go等效于PHP数组,您可以通过编写"isset"来编写:
value, isset := map[index]
Run Code Online (Sandbox Code Playgroud)
如果index
在地图中存在,value
将被适当地设置并且isset
将为真; 如果不是,value
将被设置为地图类型的零值,并且isset
将为false.