import "fmt"
func main() {
fmt.Println("① 슬라이스 리터럴 선언")
//① 기본형 슬라이스 리터럴
q := []int{2, 3, 5, 7, 11, 13}
fmt.Println("기본형 슬라이스 리터럴:", q)
//②구조체 슬라이스 리터럴
s := []struct {
i int
b bool
}{
{2, true},
{3, false},
{5, true},
{7, true},
{11, false},
{13, true},
}
fmt.Println("구조체 슬라이스 리터럴:", s)
fmt.Println("② 슬라이스를 슬라이스")
q = q[:2]
fmt.Println("q[:2]:", q)
q = q[1:]
fmt.Println("q[1:]:", q)
}
여기에서, 리터럴이라고 하는 내용이 뭐지?
A :
좋은 질문이에요!
Go 코드에서 나오는 **"리터럴"**이라는 말은 값 자체를 직접 코드에 써서 만드는 표현을 말해요.
🔍 리터럴(Literal)이란?
**리터럴(literal)**은 **변수나 상수가 아닌, 코드 안에서 "직접적으로 작성된 값"**을 의미해요.
예: 3, "hello", true, {2, true} 같은 것들이 모두 리터럴이에요.
📌 슬라이스 리터럴이란?
Go에서 슬라이스를 초기 값과 함께 직접 선언할 수 있는데, 이걸 **슬라이스 리터럴(slice literal)**이라고 불러요.
q := []int{2, 3, 5, 7, 11, 13}
여기서
- []int{2, 3, 5, 7, 11, 13} 이 부분이 슬라이스 리터럴이에요.
- 즉, 정수 타입의 슬라이스를 선언하면서 동시에 초기값을 직접 주는 것이죠.
📦 구조체 슬라이스 리터럴
s := []struct {
i int
b bool
}{
{2, true},
{3, false},
...
}
이 부분도 마찬가지예요.
- 익명 구조체(struct{i int; b bool})의 슬라이스를 만들면서
- 그 안에 직접 초기값({2, true}, {3, false} 등)을 채워 넣었죠.
→ 이 전체가 **"구조체 슬라이스 리터럴"**이에요.
🔑 요약
용어 | 의미 |
리터럴 | 코드 안에서 직접 작성된 고정된 값 |
슬라이스 리터럴 | []int{1, 2, 3}처럼 슬라이스를 직접 생성하는 표현 |
구조체 슬라이스 리터럴 | 구조체 슬라이스를 직접 값과 함께 만드는 표현 |
궁금한 게 더 있으면, 예제 추가해서 더 설명해줄 수도 있어요 :)
'프로그래밍 개념 정리' 카테고리의 다른 글
상수와 리터럴 차이 (0) | 2025.04.04 |
---|---|
라이브러리와 패키지, 핸들러 (0) | 2025.04.04 |
self 인스턴스와 변수의 스코프 (0) | 2025.04.01 |
이중 포인터, 포인터 배열 (0) | 2025.03.31 |
Go 메서드에서 포인터 변환 (0) | 2025.03.31 |