프로그래밍 개념 정리

리터럴? Literal? literally?

Dr.Mlem 2025. 4. 1. 10:14
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}처럼 슬라이스를 직접 생성하는 표현
구조체 슬라이스 리터럴 구조체 슬라이스를 직접 값과 함께 만드는 표현

궁금한 게 더 있으면, 예제 추가해서 더 설명해줄 수도 있어요 :)