🔥 슬라이스(slice)

184자
3분

Go 언어에서 배열(array)은 고정된 크기를 가지고 있어요. 반면에 슬라이스(slice)는 배열의 요소들을 동적으로 크기를 조정하며 유연하게 바라볼 수 있답니다. 실제로 슬라이스는 배열보다 훨씬 더 일반적으로 사용되지요.

슬라이스의 타입은 []T로 표현하는데, 여기서 T는 슬라이스의 요소 타입이에요.

슬라이스는 두 개의 인덱스를 지정하여 형성할 수 있어요. 하한(low)과 상한(high)을 콜론(:)으로 구분하여 지정하는 거죠:

go
a[low : high]
 
go
a[low : high]
 

이렇게 하면 반개방 구간(half-open range)이 선택되는데, 첫 번째 요소는 포함되지만 마지막 요소는 제외된답니다.

다음 표현식은 a의 1번 인덱스부터 3번 인덱스까지의 요소를 포함하는 슬라이스를 생성해요:

go
a[1:4]
 
go
a[1:4]
 

아래 예제 코드를 통해 슬라이스를 직접 만들어 볼까요?

go
package main
 
import "fmt"
 
func main() {
	// 정수형 배열 선언 및 초기화
	primes := [6]int{2, 3, 5, 7, 11, 13}
 
	// primes 배열의 인덱스 1부터 3까지의 요소로 슬라이스 생성
	var s []int = primes[1:4]
 
	// 생성된 슬라이스 출력
	fmt.Println(s)
}
 
go
package main
 
import "fmt"
 
func main() {
	// 정수형 배열 선언 및 초기화
	primes := [6]int{2, 3, 5, 7, 11, 13}
 
	// primes 배열의 인덱스 1부터 3까지의 요소로 슬라이스 생성
	var s []int = primes[1:4]
 
	// 생성된 슬라이스 출력
	fmt.Println(s)
}
 

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있어요:

text
[3 5 7]
text
[3 5 7]

보시다시피 primes 배열의 인덱스 1부터 3까지의 요소인 3, 5, 7로 이루어진 슬라이스가 생성되었네요.

이처럼 슬라이스를 사용하면 배열의 일부분을 동적으로 잘라내어 사용할 수 있답니다. 슬라이스는 배열보다 훨씬 유연하고 강력한 기능을 제공하기 때문에 Go 언어에서 널리 활용되고 있지요.

YouTube 영상

채널 보기
인터셉터와 RxJS로 캐시 시스템 구축하기 | NestJS 가이드
Pro펑터, 입력과 출력을 동시에 다루는 펑터 | 프로그래머를 위한 카테고리 이론
API 응답 지연과 복잡한 에러, NestJS 인터셉터로 관리하는 방법 | NestJS 가이드
NestJS 인터셉터에서 map 연산자로 응답을 변환하는 방법 | NestJS 가이드
NestJS 커스텀 데코레이터, createParamDecorator 사용 | NestJS 가이드
NestJS 커스텀 데코레이터 인자 전달 및 파이프 검증 활용법 | NestJS 가이드
매번 ValidationPipe 복붙하세요? NestJS 전역 파이프로 한 번에 해결하기 | NestJS 가이드
class-validator 와 DTO | NestJS 가이드