Essential Go Arrays  Suggest an edit

Create array

An array in Go is an ordered collection of same-type elements.

The basic notation to represent arrays is to use [] with the variable name.

Creating a new array looks like var array = [size]Type, replacing size by a number (for example 42 to specify it will be a list of 42 elements), and replacing Type by the type of the elements the array can contains (for example int or string)

Below is a code example showing different ways to create an array in Go.

// Creating arrays of 6 elements of type int,
// and put elements 1, 2, 3, 4, 5 and 6 inside it, in this exact order:
var array1 = [6]int{1, 2, 3, 4, 5, 6}   // classical way
var array2 = [6]int{1, 2, 3, 4, 5, 6}   // a less verbose way
var array3 = [...]int{1, 2, 3, 4, 5, 6} // the compiler will count the array elements by itself

fmt.Println("array1:", array1) // > [1 2 3 4 5 6]
fmt.Println("array2:", array2) // > [1 2 3 4 5 6]
fmt.Println("array3:", array3) // > [1 2 3 4 5 6]

// Creating arrays with default values inside:
zeros := [8]int{}       // Create a list of 8 int filled with 0
ptrs := [8]*int{}       // a list of int pointers, filled with 8 nil references ( <nil> )
emptystr := [8]string{} // a list of string filled with 8 times ""

fmt.Println("zeroes:", zeros)      // > [0 0 0 0 0 0 0 0]
fmt.Println("ptrs:", ptrs)         // > [<nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil>]
fmt.Println("emptystr:", emptystr) // > [       ]
// values are empty strings, separated by spaces,
// so we can just see separating spaces

// Arrays are also working with a personalized type
type Data struct {
	Number int
	Text   string
}

// Creating an array with 8 'Data' elements
// All the 8 elements will be like {0, ""} (Number = 0, Text = "")
structs := [8]Data{}

fmt.Println("structs:", structs) // > [{0 } {0 } {0 } {0 } {0 } {0 } {0 } {0 }]
// prints {0 } because Number are 0 and Text are empty; separated by a space
array1: [1 2 3 4 5 6]
array2: [1 2 3 4 5 6]
array3: [1 2 3 4 5 6]
zeroes: [0 0 0 0 0 0 0 0]
ptrs: [<nil> <nil> <nil> <nil> <nil> <nil> <nil> <nil>]
emptystr: [       ]
structs: [{0 } {0 } {0 } {0 } {0 } {0 } {0 } {0 }]

  ↑ ↓ to navigate     ↵ to select     Esc to close