an ordered sequence of elements of the same type and access to an element by index begins with zero for the first element.

var arr = [5]int {1,2,4,5,6}
var i int
for i=0; i< len(arr); i++ {
    fmt.Println("printing elements ",arr[i]
}
var value int
for i, value = range arr{
    fmt.Println(" range ",value)
}
for _, value = range arr{
    fmt.Println("blank range",value)
}
package main

import "fmt"

//twiceValue method given array of int type
func twiceValue(arr [5]int) {
	for i, value := range arr {
		arr[i] = 2 * value
	}
}

func main() {
	var arr = [5]int{1, 2, 3, 4, 5, 6}
	// pass by value when twiceValue function called
	twiceValue(arr)

	for i := 0; i < len(arr); i++ {
		// Original array value unmodifed () twiceValue function
		fmt.Println("new slice value", arr[i])
	}
}

https://play.golang.org/p/-DRHLqWWB66

Go arrays are not dynamic but have a fixed size. To add more elements than the size, a bigger array needs to be created and all the elements of the old one need to be copied. An array is passed as a value through functions by copying the array. Passing a big array to a function might be a performance issue.