C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Step 1: Initially we create an empty slice of slices—it has no top-level slice elements.
Step 2: Here we create 2 rows (which are also slices). And with append() we add the two rows to the "values."
Step 3: We can access entire rows with the first index. Row 0 is the first row, and row 1 is the second row.
Step 4: With 2 indexes, we address a single int element. We can get or set an integer in the nested slices.
Golang program that uses 2d slices
package main
import "fmt"
func main() {
// Step 1: create empty collection.
values := [][]int{}
// Step 2: these are the first two rows.
// ... Append each row to the two-dimensional slice.
row1 := []int{1, 2, 3}
row2 := []int{4, 5, 6}
values = append(values, row1)
values = append(values, row2)
// Step 3: display first row, and second row.
fmt.Println("Row 1")
fmt.Println(values[0])
fmt.Println("Row 2")
fmt.Println(values[1])
// Step 4: access an element.
fmt.Println("First element")
fmt.Println(values[0][0])
}
Output
Row 1
[1 2 3]
Row 2
[4 5 6]
First element
1
Tip: Arrays in Go have fixed sizes. We must specify the size of the array. For variable-size collections, slices are better.
Golang program that creates 2D array
package main
import "fmt"
func main() {
// Create two-dimensional array.
letters := [2][2]string{}
// Assign all elements in 2 by 2 array.
letters[0][0] = "a"
letters[0][1] = "b"
letters[1][0] = "c"
letters[1][1] = "d"
// Display result.
fmt.Println(letters)
}
Output
[[a b] [c d]]
Range: The range built-in returns all indexes (in order) of the animals slice. We then access each nested slice of animal names.
RangeGolang program that uses nested string slices
package main
import "fmt"
func main() {
// Create an empty slice of slices.
animals := [][]string{}
// Create three string slices.
row1 := []string{"fish", "shark", "eel"}
row2 := []string{"bird"}
row3 := []string{"lizard", "salamander"}
// Append string slices to outer slice.
animals = append(animals, row1)
animals = append(animals, row2)
animals = append(animals, row3)
// Loop over slices in animals.
for i := range animals {
fmt.Printf("Row: %v\n", i)
fmt.Println(animals[i])
}
}
Output
Row: 0
[fish shark eel]
Row: 1
[bird]
Row: 2
[lizard salamander]