【问题标题】:How to check if array index exists in go如何检查go中是否存在数组索引
【发布时间】:2020-05-26 08:46:55
【问题描述】:

我来自 javascript,知道如何检查变量是否存在。我们可以使用!!var

我在 Go 中遇到了一个数组,我想知道索引是否存在:

myArr := []int{1, 2, 3}

if myArr[3] {
  fmt.Println("YES")
}

当我运行它时,它给了我一个错误:Index Out Of Range: 3

【问题讨论】:

  • 查看长度:if 3<len(myArr)
  • index < len(myArr)。请记住,数组索引从 0 开始,一直到 len(a)-1
  • 代码使用 if 条件错误中使用的非 bool 进行编译,而不是您所说的运行时错误。使用index < len(slice) 检查切片(如示例)或数组的长度。

标签: go array-key-exists


【解决方案1】:

由于 Go 是一种编译语言,因此不存在变量的概念没有意义。最接近的是,某些类型可以采用 nil 值。

就数组而言,它们只有一个长度(没有间隙)。因此,如果长度为 N,则只有索引 0 到 N-1 是有效的。内置的 len() 函数适用于任何数组或切片。

【讨论】:

  • “由于 Go 是一种静态类型语言,因此不存在变量的概念没有意义”——这与静态类型无关。静态类型表示你在编译时就知道任何给定值是什么类型,它与它是否存在无关。
  • 谢谢@Adrian,你是对的。我相应地调整了答案。
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 2010-09-20
  • 2012-10-17
  • 2012-03-10
  • 2014-01-14
  • 1970-01-01
  • 2013-06-10
  • 2011-01-09
相关资源
最近更新 更多