Go Academy · 강의

배열: 고정 길이 컬렉션

배열 리터럴, 인덱싱 및 길이

레슨 1/413개 단계

배열: 고정 길이 컬렉션은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

배열이란 무엇인가요

Go의 배열은 같은 타입의 요소로 이루어진 고정 길이 시퀀스입니다. 길이가 타입의 일부이므로 [3]int과 [4]int은 서로 다른 타입입니다.

  • 배열은 값 타입이므로 대입하면 배열 전체가 복사됩니다
  • 길이는 컴파일 시점에 항상 알려져 있습니다
  • 직접 사용하는 경우는 드물며, 대부분의 작업에서는 슬라이스를 선호합니다

배열 리터럴

리터럴을 사용해 배열을 선언하고 초기화하세요:

package main

func main() {
    primes := [5]int{2, 3, 5, 7, 11}
    names  := [3]string{"Alice", "Bob", "Carol"}
    flags  := [4]bool{true, false, true, false}
    _ = primes; _ = names; _ = flags
}

배열 길이와 인덱싱

길이에는 len()을 사용하고, 요소를 읽거나 쓸 때는 0부터 시작하는 인덱스를 사용하세요:

package main
import "fmt"

func main() {
    scores := [3]int{90, 85, 92}
    fmt.Println(len(scores)) // 3
    fmt.Println(scores[0])   // 90
    scores[1] = 100
    fmt.Println(scores)      // [90 100 92]
}

배열 리터럴에서의 줄임표

[...]를 사용하면 컴파일러가 요소 개수를 대신 셉니다:

package main
import "fmt"

func main() {
    days := [...]string{"Mon","Tue","Wed","Thu","Fri"}
    fmt.Println(len(days)) // 5
}

배열은 값 타입입니다

배열을 대입하거나 전달할 때 Go는 배열 전체를 복사합니다. 복사본을 수정해도 원본에는 영향을 주지 않습니다:

package main
import "fmt"

func main() {
    a := [3]int{1, 2, 3}
    b := a     // full copy
    b[0] = 99
    fmt.Println(a) // [1 2 3] — unchanged
    fmt.Println(b) // [99 2 3]
}

배열 비교하기

같은 타입이고 길이도 같은 배열은 ==과 !=으로 비교할 수 있습니다:

package main
import "fmt"

func main() {
    x := [3]int{1, 2, 3}
    y := [3]int{1, 2, 3}
    z := [3]int{1, 2, 4}
    fmt.Println(x == y) // true
    fmt.Println(x == z) // false
}

2차원 배열

배열을 중첩해 격자나 행렬을 만들 수 있습니다:

package main
import "fmt"

func main() {
    grid := [2][3]int{
        {1, 2, 3},
        {4, 5, 6},
    }
    fmt.Println(grid[1][2]) // 6
}

배열 순회하기

일반적인 for 루프나 range를 사용해 순회하세요:

package main
import "fmt"

func main() {
    nums := [4]int{10, 20, 30, 40}
    for i, v := range nums {
        fmt.Printf("[%d] = %d\n", i, v)
    }
}

배열과 슬라이스 비교

주요 차이점은 다음과 같습니다:

  • 배열: 크기가 고정되고 값 타입이며, 크기가 타입의 일부입니다
  • 슬라이스: 크기가 동적이고 참조 타입이며, 배열을 기반으로 합니다
  • 실제로는 고정된 컴파일 시점 크기가 필요한 경우(예: SHA-256 해시 [32]byte)가 아니라면 슬라이스를 사용하세요

흔한 실수

다음 사항에 주의하세요:

  • 인덱스가 범위를 벗어나는 경우: i >= len(arr)이면 Go는 런타임에 패닉을 발생시킵니다
  • 큰 배열을 함수에 전달하면 비용이 큰 복사가 발생하므로, 대신 포인터나 슬라이스를 사용하세요
  • [3]int과 [4]int이 호환되지 않는 타입이라는 점을 잊지 마세요

빠른 확인

[...]string{"a","b","c"}의 길이는 얼마인가요?

복습: 배열

핵심 내용:

  • 배열은 고정된 컴파일 시점 길이를 가지며, 그 길이는 타입의 일부입니다
  • 배열은 값 타입이므로 대입하면 모든 요소가 복사됩니다
  • len()과 0부터 시작하는 인덱싱을 사용하세요
  • 대부분의 컬렉션 작업에서는 슬라이스를 선호하세요

연습 과제

정수 5개로 이루어진 배열을 선언하고, 세 번째 요소에 100을 대입한 다음 range를 사용해 배열을 출력하세요.

무료로 시작

AI 튜터와 함께 Go을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
51
레슨
203

자주 묻는 질문

“배열: 고정 길이 컬렉션” 강의는 무료인가요?

네 — “배열: 고정 길이 컬렉션” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“배열: 고정 길이 컬렉션”에서 뭘 배우나요?

배열 리터럴, 인덱싱 및 길이 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“배열: 고정 길이 컬렉션” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 배열: 고정 길이 컬렉션
  2. 슬라이스: 동적 목록
  3. 맵: 키-값 저장소
  4. range로 컬렉션 순회
← Go Academy(으)로 돌아가기