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

我们可以很容易地用地图做到这一点:

item, ok := myMap["index"]

但不是切片:

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

我很惊讶之前没人问过我这个问题。也许我对围棋切片的理解是错误的?

39954 次浏览

Go 中没有稀疏的切片,所以您可以简单地检查长度:

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

如果长度大于3,就知道索引3和之前的所有索引都存在。