Go Go의 기본값(zero value)을 믿고 초기화 안 하면 낭패 본다
페이지 정보

영삼이
본문
✅ Go의 기본값(zero value)을 믿고 초기화 안 하면 낭패 본다
기본값이 안전하진 않다
Go는 변수 선언 시 자동으로 **기본값(zero value)**을 할당한다:
var s string // ""
var n int // 0
var b bool // false
var m map[string]int // nil
❌ 문제 상황
var m map[string]int
m["a"] = 1 // panic: assignment to entry in nil map
-
map
,slice
,chan
의 기본값은nil
-
바로 사용하면 런타임 패닉 발생
✅ 반드시 make 또는 new로 초기화
m := make(map[string]int)
m["a"] = 1 // OK
ch := make(chan string)
go func() { ch <- "hello" }()
fmt.Println(<-ch) // OK
✔️ Go의 기본값은 타입에 따라 안전하지 않을 수 있음
map, slice, chan은 반드시 명시적으로 초기화하고 써야 한다.
- 이전글nil 인터페이스는 진짜 nil이 아닐 수 있다 25.03.28
- 다음글슬라이스 append는 내부 구조를 이해해야 안전하다 25.03.28
댓글목록
등록된 댓글이 없습니다.