// array literals are their own types
// [3]int is a different type to [4]int

// dont use arrays unless you know the exact length ahead of time

package main

import "fmt"

func main() {
	var x [3]int

	x = [3]int{1, 2, 3}
	fmt.Println(x)

	// index 0=1, index 5=4, index 6=6, index 10=100, index 11=15, the rest 0
	var y = [12]int{1, 5: 4, 6, 10: 100, 15}
	fmt.Println(y)

	// can leave the size off if initialising an array
	var z = [...]int{1, 2, 3}

	// comparison
	fmt.Println(z == x)

	// an array of length 2, of type array length 3 (2x3 matrix)
	var m [2][3]int
	fmt.Println(m)

	// accessing elements
	fmt.Println(x[0])
	fmt.Println(x[len(x)-1])
}
