# 배열
- 같은 타입의 여러 값들이 이루는 타입
- 요소 개수는 고정이라서 늘리거나 줄일 수 없다.
- 배열의 인덱스는 0부터 시작이다
# 배열 표현 방식
var 변수명 [요소개수]타입
예시
var arr2 [6]int
index |
0 |
1 |
2 |
3 |
4 |
5 |
값 |
0 |
0 |
0 |
0 |
0 |
0 |
- 값을 설정하지 않았을 때 int는 0, string "", bool은 false이다
# 값을 할당하는 방법
var 변수명 [요소개수]타입 = [요소개수]타입{값1, 값2,...}
변수명 := [요소개수]타입{값1, 값2,...}
예시 (string인 경우)
var str = [6]string {"월","화","수","목","금"}
index |
0 |
1 |
2 |
3 |
4 |
5 |
값 |
월 |
화 |
수 |
목 |
금 |
|
예시 (int인 경우)
arr := [5]int{1, 2, 3}
index |
0 |
1 |
2 |
3 |
4 |
값 |
1 |
2 |
3 |
0 |
0 |
예시 (bool인 경우)
boolean := [5]bool{true,true,true}
index |
0 |
1 |
2 |
3 |
4 |
값 |
true |
true |
true |
false |
false |
# 지정한 index만 값을 넣기
예시
a := [7]string{0: "월", 6: "일"}
for i := 0; i < len(a); i++ {
fmt.Println("a[", i, "]=", a[i])
}
- 변수 선언할 때 index 0과 6에만 값을 설장하는 했다.
결과
a[ 0 ]= 월
a[ 1 ]=
a[ 2 ]=
a[ 3 ]=
a[ 4 ]=
a[ 5 ]=
a[ 6 ]= 일
a[1] = "화"
for i := 0; i < len(a); i++ {
fmt.Println("a[", i, "]=", a[i])
}
- index가 1인 곳에 "화"라는 값을 넣어 준다 그럼 결과값에 a[1]에 값이 들어간 것을 볼 수 있다.
결과
a[ 0 ]= 월
a[ 1 ]= 화
a[ 2 ]=
a[ 3 ]=
a[ 4 ]=
a[ 5 ]=
a[ 6 ]= 일
# 배열 요소개수 생략방법
변수명 := [...]타입{값1, 값2,...값8}
...
를 이용하여 배열 요소 개수를 생략할 수 있다.
- 알아서 값의 개수를 지정한다. ex) 값8까지 있으니까 8로 지정해준다
예시
x := [...]int{9, 8, 7}
# for문을 이용하여 배열 읽기
예시
arr := [7]int{1, 2, 3, 4, 5,6,7}
for i:=0 ; i< 7;i++ {
fmt.Println("arr[",i,"]=", arr[i])
}
결과
arr[ 0 ]= 1
arr[ 1 ]= 2
arr[ 2 ]= 3
arr[ 3 ]= 4
arr[ 4 ]= 5
arr[ 5 ]= 6
arr[ 6 ]= 7
- for를 사용할 때 i값을 요소 개수에 맞게 사용해야한다. 7보다 큰 수이면 에러가 발생된다.
# 에러 발생
for i:=0 ; i< 8;i++ { //에러 발생 요소개수가 맞지 않아서
fmt.Println("arr[",i,"]=", arr[i])
}
- 7보다 큰 수인 8로 설정 했을 때 에러가 발생한다.
- panic: runtime error: index out of range [7] with length 7 => 에러 메시지가 뜬다
# 해결방안
1) len를 이용한다
for i := 0; i < len(arr); i++ {
fmt.Println("err[", i, "]=", arr[i])
}
2) range를 이용한다
for i, v := range arr {
fmt.Println(i, "=", v)
}