존재 여부 확인하기
comma-ok 관용구
존재 여부 확인하기은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
없는 키는 제로 값을 반환합니다
존재하지 않는 키를 읽으면 Go는 오류가 아니라 값 형식의 제로 값을 반환합니다. int의 제로 값은 0이고, string의 제로 값은 빈 문자열입니다.
package main
import "fmt"
func main() {
m := map[string]int{"a": 5}
fmt.Println(m["missing"])
}모호성 문제
값으로 0이 반환되었다면, 키가 값 0으로 존재하는 것인지 아니면 단순히 없는 것인지 어떻게 알 수 있을까요? 값만으로는 구분할 수 없습니다.
콤마-확인 관용구
맵 조회는 두 값을 반환할 수 있습니다. 하나는 값이고 다른 하나는 불리언입니다. 키가 존재하면 불리언 값은 true가 됩니다. 이를 콤마-확인 관용구라고 합니다.
package main
import "fmt"
func main() {
m := map[string]int{"a": 0}
val, ok := m["a"]
fmt.Println(val, ok)
}없는 키와 존재하는 키 구분하기
이제 두 경우를 구분할 수 있습니다. 키가 존재하면 그 값이 제로 값이어도 ok = true가 됩니다.
package main
import "fmt"
func main() {
m := map[string]int{"a": 0}
_, okA := m["a"]
_, okB := m["b"]
fmt.Println("a exists:", okA, "b exists:", okB)
}동작 전에 확인하기
일반적인 패턴은 키가 존재할 때만 동작하도록 if 안에서 콤마-확인을 사용하는 것입니다.
package main
import "fmt"
func main() {
prices := map[string]int{"pen": 3}
if p, ok := prices["pen"]; ok {
fmt.Println("price is", p)
} else {
fmt.Println("not found")
}
}값 무시하기
키의 존재 여부만 관심이 있다면 값에 빈 식별자 _를 사용하십시오.
package main
import "fmt"
func main() {
seen := map[string]bool{"x": true}
_, exists := seen["x"]
fmt.Println("x seen:", exists)
}출현 횟수 세기
콤마-확인은 카운터와 함께 사용하면 편리합니다. 하지만 ok가 없어도 m[key]++은 작동합니다. 없는 키는 0에서 시작하기 때문입니다.
package main
import "fmt"
func main() {
counts := map[string]int{}
for _, w := range []string{"a", "b", "a"} {
counts[w]++
}
fmt.Println(counts)
}안전하게 기본값 제공하기
콤마-확인과 기본값 변수를 사용하면 키가 없을 때 사용할 대체값을 제공할 수 있습니다.
package main
import "fmt"
func main() {
cfg := map[string]string{}
lang, ok := cfg["lang"]
if !ok {
lang = "en"
}
fmt.Println("lang:", lang)
}맵 이외의 콤마-확인
두 값을 반환하는 형식은 채널 수신과 형식 단언에서도 나타납니다. 패턴은 일관됩니다. 두 번째 값이 성공 여부를 알려 줍니다.
package main
import "fmt"
func main() {
var i interface{} = "hello"
s, ok := i.(string)
fmt.Println(s, ok)
}집합 포함 여부 확인
불리언 또는 빈 구조체를 값으로 사용하는 맵은 포함 여부를 추적하는 데 자주 사용됩니다. 콤마-확인을 사용하면 해당 값이 집합에 포함되는지 명확하게 확인할 수 있습니다.
package main
import "fmt"
func main() {
allowed := map[string]struct{}{"read": {}, "write": {}}
_, ok := allowed["delete"]
fmt.Println("delete allowed:", ok)
}모범 사례
제로 값이 유효한 저장 값일 수 있다면 항상 콤마-확인을 사용하십시오. 모호성을 없애고 의도를 분명하게 전달할 수 있습니다.
빠른 확인
val, ok := m["x"]를 읽었더니 val = 0, ok = true를 얻었습니다. 이것은 무엇을 의미합니까?
복습
콤마-확인으로 존재 여부 확인하기:
- 없는 키는 제로 값을 반환합니다
val, ok := m[key]는ok에 키의 존재 여부를 알려 줍니다- 0이 실제 값이 될 수 있을 때 사용하십시오
자주 묻는 질문
“존재 여부 확인하기” 강의는 무료인가요?
네 — “존재 여부 확인하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“존재 여부 확인하기”에서 뭘 배우나요?
comma-ok 관용구 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“존재 여부 확인하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 맵 내부 구조
- 존재 여부 확인하기
- 집합으로 사용하는 맵
- 반복과 순서