본문 바로가기

Go/[Go]배열, 슬라이스, 맵

배열

배열이란 무엇일까요?

배열이란, 연관된 데이터를 그룹핑하여 관리하기 위해 사용되는 데이터 타입입니다. 또한, 배열은 동일한 타입을 갖는 값의 모음으로, 데이터를 효율적으로 관리 및 이용할 수 있습니다.

 

이번 카테고리에서는 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