Inicialización de un Array Bidimensional con Longitud Inferida
En un array bidimensional, podemos utilizar el método de longitud inferida para inicializarlo, al igual que hicimos con los arrays unidimensionales.
Escribe el siguiente código en 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]]
}
El código anterior demuestra el uso de la longitud inferida para inicializar un array bidimensional.
go run ~/project/array.go
La salida es la misma que con el método de lista de inicialización.
[[0 0 0] [0 0 0] [0 0 0]]
[[1 2 3 3] [2 3 4 3] [0]]
[[London Chengdu] [Paris Boston]]
Sin embargo, a diferencia de los arrays unidimensionales, en la inicialización con longitud inferida de un array bidimensional, el símbolo ...
solo puede existir en los primeros corchetes cuadrados.
Por ejemplo:
var numArray = [...][]int{{1, 2, 3, 3}, {2, 3, 4, 3}}
Este código es válido, pero las siguientes dos variaciones son incorrectas:
var numArray = [][...]int{{1, 2, 3, 3}, {2, 3, 4, 3}}
var numArray = [...][...]int{{1, 2, 3, 3}, {2, 3, 4, 3}}
Además, comparemos numArray
y cityArray
.
Podemos ver que en cityArray
, especificamos el segundo parámetro del tamaño del array bidimensional, como se muestra a continuación:
var cityArray = [...][2]string{{"London", "Chengdu"}, {"Paris", "Boston"}}
Esto significa que especificamos el tamaño de cada sub-array como 2
durante la inicialización.
Si los valores dados no son suficientes durante la inicialización, se utilizarán los valores predeterminados del tipo de datos para llenar los elementos faltantes.
Si el número de valores dados excede el tamaño especificado, se producirá un error.