배열: 고정 길이 컬렉션
배열 리터럴, 인덱싱 및 길이
배열: 고정 길이 컬렉션은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 배열: 고정 길이 컬렉션
- 슬라이스: 동적 목록
- 맵: 키-값 저장소
- range로 컬렉션 순회