🔥 슬라이스 리터럴

291자
4분

슬라이스 리터럴은 배열 리터럴과 비슷하지만, 길이를 명시하지 않는다는 점이 다릅니다. 아래 코드를 보시면 배열 리터럴이 어떤 모습인지 알 수 있어요.

go
[3]bool{true, true, false}
 
go
[3]bool{true, true, false}
 

그리고 다음 코드를 보면,

go
[]bool{true, true, false}
 
go
[]bool{true, true, false}
 

슬라이스 리터럴을 사용하여 [true, true, false] 값을 가지는 새로운 배열을 생성합니다. 그리고 그 배열을 참조하는 슬라이스를 만들어 내죠. 즉, 슬라이스 리터럴로 생성한 배열은 배열 리터럴로 생성한 배열과는 별개의 배열입니다.

실제로 슬라이스 리터럴을 사용하는 예제 코드를 살펴보죠.

go
package main
 
import "fmt"
 
func main() {
	// 정수형 슬라이스 q를 선언하고 초기화합니다.
	q := []int{2, 3, 5, 7, 11, 13}
	fmt.Println(q)
 
	// 불리언 슬라이스 r을 선언하고 초기화합니다.
	r := []bool{true, false, true, true, false, true}
	fmt.Println(r)
 
	// 구조체 슬라이스 s를 선언하고 초기화합니다.
	s := []struct {
		i int
		b bool
	}{
		{2, true},  // 첫 번째 구조체 요소
		{3, false}, // 두 번째 구조체 요소
		{5, true},  // 세 번째 구조체 요소
		{7, true},  // 네 번째 구조체 요소
		{11, false},// 다섯 번째 구조체 요소
		{13, true}, // 여섯 번째 구조체 요소
	}
	fmt.Println(s)
}
 
go
package main
 
import "fmt"
 
func main() {
	// 정수형 슬라이스 q를 선언하고 초기화합니다.
	q := []int{2, 3, 5, 7, 11, 13}
	fmt.Println(q)
 
	// 불리언 슬라이스 r을 선언하고 초기화합니다.
	r := []bool{true, false, true, true, false, true}
	fmt.Println(r)
 
	// 구조체 슬라이스 s를 선언하고 초기화합니다.
	s := []struct {
		i int
		b bool
	}{
		{2, true},  // 첫 번째 구조체 요소
		{3, false}, // 두 번째 구조체 요소
		{5, true},  // 세 번째 구조체 요소
		{7, true},  // 네 번째 구조체 요소
		{11, false},// 다섯 번째 구조체 요소
		{13, true}, // 여섯 번째 구조체 요소
	}
	fmt.Println(s)
}
 

위 코드에서는 세 가지 유형의 슬라이스 리터럴을 선언하고 초기화하는 모습을 보여줍니다.

먼저 q는 정수형 슬라이스로, {2, 3, 5, 7, 11, 13}과 같이 초기화됩니다. 이렇게 하면 길이가 6인 정수형 슬라이스가 생성되죠.

다음으로 r은 불리언 슬라이스입니다. {true, false, true, true, false, true}로 초기화되어 길이가 6인 불리언 슬라이스가 만들어집니다.

마지막으로 s는 구조체 슬라이스인데요. 구조체 타입을 먼저 선언한 후, 중괄호 안에 각 구조체 요소의 필드 값을 순서대로 나열하여 초기화합니다. 예제에서는 ib 두 개의 필드를 가진 구조체를 사용했어요.

이처럼 슬라이스 리터럴을 활용하면 다양한 타입의 슬라이스를 간편하게 선언하고 초기화할 수 있습니다. 배열 리터럴과 달리 길이를 명시하지 않아도 되므로 좀 더 유연하게 슬라이스를 다룰 수 있죠.

슬라이스 리터럴은 Go 언어에서 자주 사용되는 문법 중 하나입니다. 배열과 달리 길이를 명시하지 않아도 되므로 코드의 가독성과 유지보수성을 높일 수 있어요.

YouTube 영상

채널 보기
Maybe 펑터와 타입 들어올리기 | 프로그래머를 위한 카테고리 이론
함수형 미들웨어 | NestJS 가이드
Product와 Coproduct가 Bifunctor인 이유 | 프로그래머를 위한 카테고리 이론
NestJS 미들웨어 기초 - 클래스 기반 미들웨어와 DI | NestJS 가이드
펑터 법칙과 등식 추론 | 프로그래머를 위한 카테고리 이론
NestJS 파이프가 뭔가요? 컨트롤러를 보호하는 방법 | NestJS 가이드
리더 펑터 - 함수도 펑터다! | 프로그래머를 위한 카테고리 이론
펑터 타입 클래스 | 프로그래머를 위한 카테고리 이론