본문 바로가기
CS/Go

Go programming 복합 타입 - 배열 에 대하여

by Warehaus 2023. 7. 29.

 

 

 

오늘은 go 언어의 복합 타입에 대해 포스팅을 남깁니다.

 

복합타입

 

기본타입을 다양한 방법으로 결합하여 생성한 타입

 

 

복합타입의 유형

 

복합타입의 유형은 배열, 슬라이스, 맵, 구조체 이렇게 4가지가 있습니다.

 


특징

 

복합타입 유형 별 특징은 다음과 같습니다.

다양한 특징이 있지만 상세한 특징은 각 타입별 설명에 정리 합니다.

 

 

고정크기

 

배열, 구조체는 집합타입으로 크기가 고정되어 있습니다.

지정 된 사이즈 이상의 데이터를 할당이 불가능합니다.

 

 

동적크기

 

슬라이스, 맵은 동적 데이터 구조입니다. 값을 추가할 때 마다 커질 수 있습니다.

 

 

간단한 특징은 이정도로 설명하고 타입별 세부특징을 알아보겠습니다.

 

 

반응형

배열

 

배열은 0개 이상으로 이뤄진 고정길이 시퀀스 입니다.

지정된 특정 타입으로만 원소를 이루고 있으며, 길이를 고정한다는 특성 때문에 많이 쓰이고 있지는 않습니다.

 

배열대비 슬라이스는 크기가 가변적이라 유용하지만,

슬라이스를 이해하려면 배열을 알고 넘어가야 하므로 먼저 언급하고 넘어가겠습니다.

 

 

배열의 원소는 기본첨차표기법으로 접근하며, 첨자는 0 ~ (배열길이 -1) 까지 입니다.

그리고 원소의 갯수를 반환하는 내장함수 len을 가지고 있습니다.

 

배열의 코드 예시는 다음과 같습니다.

 

package main

import "fmt"

func main() {
	var a [4]int
	fmt.Println(a[0])
	fmt.Println(a[len(a)-1])
}

 

위 코드를 출력하면 다음과 같은 결과를 얻을 수 있습니다.

 

$ ./complex_type 
0
0

 

출력을 통해 배열의 첫번째 원소와 마지막 원소의 값이 0인 것을 알 수 있으며

이와 동시해 초기화 되지 않은 int 배열은 0으로 초기화 된다는 것을 확인할 수 있습니다.

 

 

배열은 for loop 를 통해 index 를 함께 출력도 가능합니다.

아래 코드를 통해 다음과 같은 결과를 얻을 수 있습니다.

 

for i, v := range a {
	fmt.Println(i, v)
}

 

배열의 index 와 값을 각각 출력 해 줍니다.

 

0 0
1 0
2 0
3 0

 

어려운 코드는 아닙니다.

 

 

배열 리터럴을 통해 배열의 값의 목록으로 초기화도 가능합니다.

그리고 배열 리터럴의 길이 부분을 '...' 으로 생략하면 배열의 길이는 초기화 값의 개수로 결정됩니다.

 

// 배열 리터럴
var b [3]int = [3]int{1, 2, 3}

for i, v := range b {
    fmt.Println(i, v)
}

// 길이의 생략
var c [4]int = [...]int{1, 2, 3, 4}

for i, v := range c {
    fmt.Println(i, v)
}

d := [...]int{1, 2, 3}

for i, v := range d {
    fmt.Println(i, v)
}

 

 

배열의 크기는 해당 타입의 일부라고 여겨집니다.

그러므로 특정 배열 변수의 길이와 다른 크기의 배열을 할당하는 경우,

서로 다른 타입에 할당을 하는 것과 같은 행위라고 보셔도 됩니다.

 

 

wh.