🔥 Nil 슬라이스
Go 언어에서 슬라이스의 zero value는 nil이에요. Nil 슬라이스는 길이(length)와 용량(capacity)이 0이며, 기본 배열(underlying array)이 없답니다. 다음 코드를 통해 nil 슬라이스의 특성을 살펴볼까요?
package main import "fmt" func main() { var s []int // int형 슬라이스 변수 s를 선언합니다. fmt.Println(s, len(s), cap(s)) // 슬라이스 s, 길이, 용량을 출력합니다. if s == nil { fmt.Println("nil!") // 슬라이스 s가 nil이면 "nil!"을 출력합니다. } }go
위 코드에서 var s []int로 int형 슬라이스 변수 s를 선언했어요. 이때 s에는 명시적으로 값을 할당하지 않았으므로 zero value인 nil이 할당됩니다.
그 다음 줄에서는 fmt.Println()으로 슬라이스 s와 len(s), cap(s)를 출력하고 있어요. 출력 결과를 보면 s는 [], 즉 빈 슬라이스로 출력되고, len(s)와 cap(s)는 모두 0으로 출력되는 걸 확인할 수 있습니다.
[] 0 0 nil!text
마지막으로 if s == nil 조건문으로 슬라이스 s가 nil인지 검사하고 있어요. 조건문 내부의 fmt.Println("nil!")은 슬라이스 s가 nil일 때만 실행되므로, 콘솔에는 "nil!"이 출력될 거예요.
이렇게 nil 슬라이스는 길이와 용량이 0이며, 기본 배열도 없다는 걸 코드와 함께 확인해 보았어요. nil 슬라이스는 일반적으로 슬라이스 변수를 선언만 하고 값을 할당하지 않았을 때 나타나며, 빈 슬라이스로 취급된답니다.
nil 슬라이스와 빈 슬라이스의 차이점을 명확히 이해하는 것도 중요해요. 다음 표를 통해 nil 슬라이스와 빈 슬라이스의 차이점을 정리해 볼게요.
| 특성 | nil 슬라이스 | 빈 슬라이스 |
|---|---|---|
| 선언 방식 | var s []int | s := []int{} 또는 s := make([]int, 0) |
| 길이 | 0 | 0 |
| 용량 | 0 | 0 |
| 기본 배열 | 없음 | 있음 (길이와 용량이 0인 배열) |
nil 여부 | true | false |
nil 슬라이스와 빈 슬라이스는 길이와 용량이 모두 0이라는 점에서 동일하지만, nil 슬라이스는 기본 배열이 없고 nil값을 가지는 반면, 빈 슬라이스는 길이와 용량이 0인 기본 배열을 가지고 있다는 점이 다르답니다.
이렇게 nil 슬라이스와 빈 슬라이스의 개념과 차이점을 잘 이해하고 활용한다면 Go 언어로 슬라이스를 다루는 데 많은 도움이 될 거예요!