🔥 슬라이스 리터럴

291자
4분

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

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

그리고 다음 코드를 보면,

[]bool{true, true, false}
 
go

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

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

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

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

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

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

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

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

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