To get a part or section of an array, you have to use the concept of Slices
in Go or Golang. Slices in simple terms are nothing but a view of the section of an array and are formed by specifying the start
and end
indexes of that array.
To make a slice from an array, we can specify the start
and end
indexes of an array separated by the :
symbol (colon) inside an opening and a closing square brackets symbol ([]
).
TL;DR
package main
import "fmt"
func main() {
// an array of names
names := [4]string{"John Doe", "Lily Roy", "Daniel Doe", "Embla Marina"}
// get the array values from the index `0`
// till the index of `2` using a slice
// and providing the `start` value as `0`
// and end value as `3`
namesSlice := names[0:3]
// log the contents of `namesSlice` to console
fmt.Println(namesSlice) // ✅ [John Doe Lily Roy Daniel Doe]
}
For example, let's say we have an array of names
like this,
package main
func main(){
// an array of names
names := [4]string{"John Doe", "Lily Roy", "Daniel Doe", "Embla Marina"}
}
To know more about creating an array, see the blog on How to create a fixed-size array in Go or Golang?
Now if we want to get a part of an array or all the values of the array from the index of 0
to the index of 2
. To do that we have to use the concept of Slices in Go.
Let's first start the slice by writing a []
symbol and inside the brackets we can first write the starting index which is the value of 0
followed by the :
symbol and then by writing the ending index of 3
. You might doubt why we had put the value of 3
instead of 2
. In the slices, to get the value in the ending index which is the 2
and index we have to write the value of 3
so that while picking the items it will iterate till the 3
rd index but doesn't include the value in the resulting slice.
It can be done like this,
package main
func main(){
// an array of names
names := [4]string{"John Doe", "Lily Roy", "Daniel Doe", "Embla Marina"}
// get the array values from the index `0`
// till the index of `2` using a slice
// and providing the `start` value as `0`
// and end value as `3`
names[0:3]
}
Let's now assign the slice to a new variable called namesSlice
like this,
package main
func main(){
// an array of names
names := [4]string{"John Doe", "Lily Roy", "Daniel Doe", "Embla Marina"}
// get the array values from the index `0`
// till the index of `2` using a slice
// and providing the `start` value as `0`
// and end value as `3`
namesSlice := names[0:3]
}
Finally, we can log the contents of the namesSlice
to the console like this,
package main
import "fmt"
func main() {
// an array of names
names := [4]string{"John Doe", "Lily Roy", "Daniel Doe", "Embla Marina"}
// get the array values from the index `0`
// till the index of `2` using a slice
// and providing the `start` value as `0`
// and end value as `3`
namesSlice := names[0:3]
// log the contents of `namesSlice` to console
fmt.Println(namesSlice) // ✅ [John Doe Lily Roy Daniel Doe]
}
As you can see from the above code the namesSlice
only contains the value from the 0
th index to the index of 2
which is what we want.
See the above code live in The Go Playground.
That's all 😃!