Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

Code Habit

Go ) 배열 본문

카테고리 없음

Go ) 배열

코드베어 2020. 5. 13. 10:22

Go 언어에서 배열은 다음과 같이 사용한다.

  • var 배열명 [길이]자료형
var a [5]int
a[2] = 7
fmt.Println(a) // [0 0 7 0 0]

 

배열을 생성하면서 값을 초기화 하려면 다음과 같이 쓰면 된다.

var a [5]int = [5]int{32, 29, 78, 16, 81}    // int 형이며 길이가 5인 배열을 선언하고 초기화
var b = [5]int{32, 29, 78, 16, 81}           // 배열을 선언할 때 자료형과 길이 생략
c := [5]int{32, 29, 78, 16, 81}	             // 배열을 선언할 때 var 키워드, 자료형과 길이 생략

 

...을 사용하면 초기화할 값의 개수에 따라 자동으로 크기가 설정된다.

c := [...]int{32, 29, 78, 16, 81}
d := [...]string{"Maria", "Andrew", "John"}

 

자료형 앞에 대괄호를 여러 번 사용하면 다차원 배열을 만들 수 있다. 다음은 2차원 배열을 만들고 값을 초기화 한다.

a := [3][3]int{
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9},
}

 

배열의 길이는 len 함수로 구할 수 있다.

a := [5]int{32, 29, 78, 16, 81}

for i:=0; i < len(a); i++ {
    fmt.Println(a[i])
}

 

range 키워드를 사용하여 배열의 길이를 구하지 않고 좀 더 간단하게 배열의 요소를 가져올 수 있다.

  • for 인덱스, 값 := range 배열 {}
a := [5]int{32, 29, 78, 16, 81}

// i에는 인덱스 value에는 값이 들어감
for i, value := range a {
    fmt.Println(i, value)
}

 // i에 인덱스가 들어감
 for i := range a {
     fmt.Println(i)
 }
 
 // value에 값 들어감 ( 인덱스 변수 생략 : _ 사용 )
 for _, value := range a {
     fmt.Println(value)
 }

 

※ Go 언어는 결과값을 여러 개 리턴할 수 있는 특징이 있다. 따라서 결과값을 모두 받으려면 변수 개수를 맞춰주어야 하고, 변수 없이 개수만 맞출 때 밑줄 문자를 사용해야 한다.

 

Go 언어의 배열 변수는 배열 전체를 뜻하며 첫 번째 요소의 포인터가 아니다. 따라서 배열을 다른 변수에 대입하면 배열 전체가 복사된다.

a := [5]int{1, 2, 3, 4, 5}
b := a // 배열을 대입하면 배열 전체가 복사됨

fmt.Println(a) // [1, 2, 3, 4, 5]
fmt.Println(b) // [1, 2, 3, 4, 5]