英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论