본문 바로가기
CS/Go

Go programming 복합 타입 - 슬라이스 에 대하여

by Warehaus 2023. 7. 29.

 

 

 

 

 

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

오늘은 go 언어의 복합 타입에 대해 포스팅을 남깁니다. 복합타입 기본타입을 다양한 방법으로 결합하여 생성한 타입 복합타입의 유형 복합타입의 유형은 배열, 슬라이스, 맵, 구조체 이렇게 4가

armin.tistory.com

 

 

이전 글에 이어서 오늘은 슬라이스에 대해 설명합니다.

 

 

 


슬라이스

 

슬라이스는 모든 원소가 같은 타입인 가변길이 시퀀스입니다.

슬라이스 타입은 원소가 T 타입인 경우 []T 태로 정의하며, 이는 크기가 없는 배열 타입처럼 보이기도 합니다

 

 

슬라이스 타입의 선언과 활용

e := []int{1, 2, 3}
fmt.Println(e)

 

출력

[1 2 3]
반응형

 

 


특징

 

1. 모든 원소의 타입이 같고, 길이가 가변적 입니다.

2. 슬라이스는 배열과 달리 '==' 연산자로 원소비교가 불가합니다.

3. 슬라이스 탕비의 제로값은 nil입니다.

 

 


구성요소

 

1. 포인터

 

슬라이스로 접근할 수 있는 배열의 첫 원소를 가리킵니다. 허나, 반드시 배열의 첫 원소일 필요는 없습니다.

 

2. 길이

 

슬라이스 원소의 갯수 입니다. 내장함수 len 에 의해 반환됩니다.

 

3. 용량

 

슬라이스 내부 배열의 시작과 끝 사이에 있는 원소 갯수 입니다.  내장함수 cap은 용량을 반환합니다.

 

 


슬라이스 항목의 추가

 

슬라이스 항목의 추가에는 내장함수 append를 이용합니다.

 


var x []int
x = append(x, 1)
x = append(x, 10)
fmt.Println(x)

x = append(x, 3)
fmt.Println(x)

출력 :

[1 10 3]

 

아래 코드처럼 삭제를 할 수도 있습니다.


var x []int
x = append(x, 1)
x = append(x, 10)
x = append(x, 3)
fmt.Println(x)

x = x[:len(x)-1]
fmt.Println(x)

출력 :

[1 10 3]
[1 10]

 

삭제를 자주 사용하는 경우 별도의 remove 함수를 만들어야 합니다.