추론된 길이를 사용한 2 차원 배열 초기화
2 차원 배열에서 1 차원 배열에서 했던 것처럼 길이 추론 (inferred length) 방법을 사용하여 초기화할 수 있습니다.
array.go에 다음 코드를 작성합니다.
package main
import "fmt"
func main() {
// 자동으로 0 으로 초기화
var simpleArray [3][3]int
// 지정된 초기 값을 사용하여 초기화, 누락된 요소에 대한 기본값 사용
var numArray = [...][]int{{1, 2, 3, 3}, {2, 3, 4, 3}, {0}}
// 지정된 초기 값을 사용하여 초기화
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]]
}
위 코드는 길이 추론을 사용하여 2 차원 배열을 초기화하는 것을 보여줍니다.
go run ~/project/array.go
출력 결과는 초기화 목록 (initialization list) 방법과 동일합니다.
[[0 0 0] [0 0 0] [0 0 0]]
[[1 2 3 3] [2 3 4 3] [0]]
[[London Chengdu] [Paris Boston]]
그러나 1 차원 배열과 달리, 2 차원 배열의 길이 추론 초기화에서 ... 기호는 첫 번째 대괄호 안에만 존재할 수 있습니다.
예를 들어:
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에서 2 차원 배열의 크기의 두 번째 매개변수를 지정하는 것을 볼 수 있습니다. 아래와 같습니다.
var cityArray = [...][2]string{{"London", "Chengdu"}, {"Paris", "Boston"}}
이는 초기화 중에 각 하위 배열의 크기를 2로 지정한다는 의미입니다.
초기화 중에 주어진 값이 충분하지 않으면, 데이터 유형의 기본값이 누락된 요소를 채우는 데 사용됩니다.
주어진 값의 수가 지정된 크기를 초과하면 오류가 발생합니다.