如何在Go中检查切片是否具有给定的索引?

huangapple go评论80阅读模式
英文:

How to check if a slice has a given index in Go?

问题

我们可以很容易地使用映射(maps)来实现这个:

item, ok := myMap["index"]

但是对于切片(slices)来说就不行了:

item, ok := mySlice[3] // 报错!

很奇怪之前没有人问过这个问题。也许我对Go语言的切片有了错误的理解?

英文:

We can easily do that with maps:

item, ok := myMap["index"]

But not with slices:

item, ok := mySlice[3] // panic!

Surprised this wasn't asked before. Maybe I'm on the wrong mental model with Go slices?

答案1

得分: 78

在Go语言中没有稀疏切片,所以你可以简单地检查长度:

if len(mySlice) > 3 {
    // ...
}

如果长度大于3,你就知道索引3及其之前的所有元素都存在。

英文:

There is no sparse slices in Go, so you could simply check the length:

if len(mySlice) > 3 {
    // ...
}

If the length is greater than 3, you know that the index 3 and all those before that exist.

huangapple
  • 本文由 发表于 2014年12月2日 22:45:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/27252152.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定