为了账号安全,请及时绑定邮箱和手机立即绑定

测试索引超出 golang 范围

测试索引超出 golang 范围

Go
狐的传说 2021-09-20 20:35:59
很抱歉这个菜鸟问题,但我不确定如何测试我正在访问的元素是否对数组有效,请考虑以下人为代码: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为假。


查看完整回答
反对 回复 2021-09-20
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信