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

marcio picture marcio · Dec 2, 2014 · Viewed 19.2k times · Source

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?

Answer

laurent picture laurent · Dec 2, 2014

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.