🐾   [golang] 배열 공부하기

배열

  • 같은 타입의 여러 값들이 이루는 타입
  • 요소 개수는 고정이라서 늘리거나 줄일 수 없다.
  • 배열의 인덱스는 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}
index 0 1 2
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])
}
  1. range를 이용한다
for i, v := range arr {
fmt.Println(i, "=", v)
}

​ ​ ​