괴발개발 성장기

Study/Go 언어

[golang] 배열 공부하기

지니유 2022. 2. 14. 23:59
반응형

# 배열

  • 같은 타입의 여러 값들이 이루는 타입
  • 요소 개수는 고정이라서 늘리거나 줄일 수 없다.
  • 배열의 인덱스는 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])
	}

2) range를 이용한다

	for i, v := range arr {
		fmt.Println(i, "=", v)
	}

 

반응형

'Study > Go 언어' 카테고리의 다른 글

[golang] 타입(type) 확인 하는 방법  (0) 2022.02.19
[golang] 구조체(struct) 공부하기  (0) 2022.02.18
[golang] for range 공부하기  (0) 2022.02.13
[golang] for문 공부하기  (0) 2022.02.12
[golang] switch문 공부하기  (0) 2022.02.11