var nums [5]intdays := [3]string{"monday", "tuesday", ""} - index별로 요소값을 초기화 할 수 있다.
```go
nums := [5]int{1:10, 3:20}
const Y int = 3
func main() {
x := 5
a := [x]int{1,2,3,4,5} // Error: non-constant array bound x
b := [Y]int{1,2,3,4,5}
c := [10]int
}
nums := [...]int{1:10, 3:20}
for i := 0; i < len(nums); i++ {
fmt.Println(nums[i])
}
nums := [...]int{1:10, 3:20}
for i, v := range nums { // i: index, v: value
fmt.Println(i, v)}go var a [10]int32를 선언하면 int32값 10개를 저장할 수 있는 연속된 메모리 공간을 찾아 할당한다.(int32 타입은 4바이트이므로 연속된 40바이트를 할당)대입 연산자를 사용하면 배열 대 배열 복사를 할 수 있다.
func Test_arrayCopy(t *testing.T) {
a := [5]int{1, 2, 3, 4, 5}
b := [5]int{500, 400, 300, 200, 100}
for i, v := range a {
fmt.Printf("a[%d] = %d\n", i, v)
}
for i, v := range b {
fmt.Printf("a[%d] = %d\n", i, v)
}
b = a
for i, v := range b {
fmt.Printf("a[%d] = %d\n", i, v)
}
}
- 배열의 복사 또한 타입과 크기가 같아야 한다.
### 12.4 다중 배열
- 다중 배열은 중첩된 배열을 말한다.
- 이중배열은 이차원 배열이라 부르고, 삼중 배열은 삼차원 배열이라고 부름
- 컴퓨터는 차원 형태로 데이터를 저장하지 않고 전체 요소 개수만큼 연속된 메모리 형태로 저장한다.
- 다중 배열 선언은 아래와 같다.
```go
func Test_arrayCopy(t *testing.T) {
a := [5]int{1, 2, 3, 4, 5}
b := [5]int{500, 400, 300, 200, 100}
for i, v := range a {
fmt.Printf("a[%d] = %d\n", i, v)
}
for i, v := range b {
fmt.Printf("a[%d] = %d\n", i, v)
}
b = a
for i, v := range b {
fmt.Printf("a[%d] = %d\n", i, v)
}
}