개발 지식

개발 지식

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

페이지 정보

profile_image
영삼이
0건 102회 25-03-28 15:09

본문

✅ 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은 반드시 명시적으로 초기화하고 써야 한다.

댓글목록

등록된 댓글이 없습니다.