Инициализация двумерного массива с выводом длины
В двумерном массиве мы можем использовать метод вывода длины для его инициализации, как и в одномерных массивах.
Напишите следующий код в файле array.go
:
package main
import "fmt"
func main() {
// Automatically initialized to 0
var simpleArray [3][3]int
// Initialize using specified initial values, use default values for the missing elements
var numArray = [...][]int{{1, 2, 3, 3}, {2, 3, 4, 3}, {0}}
// Initialize using specified initial values
var cityArray = [...][2]string{{"London", "Chengdu"}, {"Paris", "Boston"}}
fmt.Println(simpleArray) // [[0 0 0] [0 0 0] [0 0 0]]
fmt.Println(numArray) // [[1 2 3 3] [2 3 4 3] [0]]
fmt.Println(cityArray) // [[London Chengdu] [Paris Boston]]
}
В приведенном выше коде показано, как использовать вывод длины для инициализации двумерного массива.
go run ~/project/array.go
Вывод будет таким же, как при использовании списка инициализации.
[[0 0 0] [0 0 0] [0 0 0]]
[[1 2 3 3] [2 3 4 3] [0]]
[[London Chengdu] [Paris Boston]]
Однако, в отличие от одномерных массивов, при инициализации двумерного массива с выводом длины символ ...
может находиться только в первых квадратных скобках.
Например:
var numArray = [...][]int{{1, 2, 3, 3}, {2, 3, 4, 3}}
Этот код корректен, но следующие два варианта ошибочны:
var numArray = [][...]int{{1, 2, 3, 3}, {2, 3, 4, 3}}
var numArray = [...][...]int{{1, 2, 3, 3}, {2, 3, 4, 3}}
Кроме того, сравним numArray
и cityArray
.
Мы видим, что в cityArray
мы указываем второй параметр размера двумерного массива, как показано ниже:
var cityArray = [...][2]string{{"London", "Chengdu"}, {"Paris", "Boston"}}
Это означает, что мы указываем размер каждого подмассива как 2
при инициализации.
Если при инициализации данных недостаточно, будут использованы значения по умолчанию для данного типа данных для заполнения отсутствующих элементов.
Если количество заданных значений превышает указанный размер, возникнет ошибка.