Comment on page
20. Arrays
collecting similar data
Arrays are one of the fundamental type in any programming languages. Arrays are generally used to store list of things of similar type.
In Go, an array is a fixed-length sequence of zero or more elements of a particular type. That means, at run-time array can not grow or shrink. Due to this limitation, arrays are rarely used directly in Go
While declaring array, we need to specify size and type of array.
Below are some of array declarations:
main.go
var numbers [8]float64
var days [5]string
var marks [10]int
1st line declares array named
numbers
which can hold up-to 8 float64
values.2nd declares array named
songs
which can hold up-to 5 string
values Since an array is collection of item, individual items of an array can be accessed by using square brackets
[]
with an index that begins at 0
Remember array index starts at
0
and not 1
main.go
var days [7]string
// days[0] is the first element
days[0] = "Sunday"
// days[6] is the last element
days[6] = "Saturday"
If we try to access an element out or array index, Go compiler will give us error
main.go
days[7] = "Funday
"
output: invalid array index 7 (out of bounds for 7-element array)
When a new array is created, all the values are initialized to the zero value for the type. Zero Values ensures that array is not uninitialized.
main.go
var numbers [8]float64
var marks [10]int
fmt.Println(numbers, marks)
// both numbers and marks elements get their zero values
//output : [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0]
We can assign values to an array while declaring using Array Literals.
main.go
var data [2]string = [2]string{
"Hello",
"World!",
}
Short variable declaration can also be used for array declaration
main.go
newData := [2]string{"Hello", "World"}
fmt.Println(newData)
// output [Hello World!]
if an ellipsis “
...
” appears in place of the length, the array length is determined by the number of elementsmain.go
arr := [...]string{"Hello", "World", "From Go"}
fmt.Println(arr)
We can use traditional index to iterate over an array.When accessing array elements using a index variable, we need to be careful. Trying to access an index that is outside the array will cause a run-time panic!
main.go
days = [7]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}
for index := 0; index < 7; index++ {
fmt.Println(days[index])
}
A safer way is to use
len()
function to calculate length of array being iterated.main.go
for index := 0; index < len(days); index++ {
fmt.Println(days[index])
}
A more idiomatic way is to use
for...range
to loop over an array. range
returns each array index and item. main.go
for i, day := range days {
fmt.Println(i, day)
}
If index is not required, it can be ignored using blank identifier
main.go
for _, day := range days {
fmt.Println(day)
}
Type of array is determined by what type of data array stores as well as length of array. If two array's store same type of data but have different lengths, Go will treat those arrays as of two different types.
main.go
greetings := [...]string{"Hello", "World"}
greetings = [...]string{"Hello", "World", "From Go"}
//output : cannot use [3]string literal (type [3]string) as type [2]string in assignment
Arrays of similar types can be compared using
==
and !=
. Remember, for arrays to be to of similar types, they need to store same type of data as well as their length must be same. main.go
a := [2]string{"Hello", "World"}
b := [...]string{"Hello", "World"}
fmt.Println(a == b)
Last modified 4yr ago