배열이란 무엇일까요?
배열이란, 연관된 데이터를 그룹핑하여 관리하기 위해 사용되는 데이터 타입입니다. 또한, 배열은 동일한 타입을 갖는 값의 모음으로, 데이터를 효율적으로 관리 및 이용할 수 있습니다.
이번 카테고리에서는 Go에 내장되어 있는 데이터를 관리하는 자료구조를 살펴보겠습니다.
- Array
- Slice
- map
Go 언어 배열의 기본적인 포맷 구조는 다음과 같습니다.
var devhsops1 [5]int
var devhsops2 [5]int = [5]int{1,2,3,4,5}
devhsops3 := [5]int{1,2,3,4,5}
devhsops4 := [5]int{
1,
2,
3,
4,
5,
}
- devhsops1은 배열을 선언하는 방법입니다. 이와 같이 선언하게 되면 5개의 int type을 가지는 배열을 생성하게 되고, 각 인덱스들의 값은 모두 0으로 초기화됩니다. (string type은 "" 빈문자열로 초기화됩니다.)
- devhsops2, devhsops3는 "배열 리터럴" 입니다. 즉, 배열이 가질 값을 초기화할 때 사용하는 방법입니다. 이처럼 배열 리터럴을 사용하여 값을 할당할 수도 있고, 단축 변수를 선언하여 값을 할당할 수도 있습니다.
- devhsops4는 여러 줄에 걸쳐서 선언할 수 있습니다. 단, 이 경우에 '\n'을 수행하기 전 쉼표(',')붙여줘야 한다는 제약조건이 있습니다.
배열 각 element들에 접근하는 방법
- for 문
- for range 문
// for 문
for i := 0; i < len(devhsops2); i++{
fmt.Println(devhsops2[i]);
}
// for range 문
for idx, num := range devhsops2{
fmt.Println(idx,num)
}
for _, num := range devhsops2{
fmt.Println(num)
}
for idx, _ := range devhsops2{
fmt.Println(idx)
}
- for 문에 경우, 일반적으로 알고있는 반복문의 형태와 동일합니다.
- 그러나, for range 문은 기존의 알고있던 방법과 조금은 차이가 존재하는데요. range는 2개의 반환값을 갖는다는 것입니다. 해당 예시 코드처럼 idx, num에 값을 할당하는 것을 확인하실 수 있습니다. 이때 idx는 각 인덱스 번호, num은 각 인덱스에 해당하는 값을 할당하게 됩니다.
반복문을 설명하는 것에 있어서 무언가 한 가지 빠진 느낌인데요. 왜 while 문에 대한 설명이 없을까 궁금하실 것입니다.
Go에는 while 문이 없습니다. Go는 while 문이 없는 대신, for 문으로 while문을 대체할 수 있습니다.
i := 0
for i != 10{
fmt.Println(i)
i++
}
복잡할 것 없이, 이처럼 for 문을 while문과 동일한 형식으로 나타낼 수 있습니다.
'Go > [Go]배열, 슬라이스, 맵' 카테고리의 다른 글
맵 (0) | 2021.11.22 |
---|---|
슬라이스 (0) | 2021.11.22 |
텍스트 파일 읽기 (0) | 2021.11.22 |