0Pricing
Go Academy · 강의

존재 여부 확인하기

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 맵 내부 구조
  2. 존재 여부 확인하기
  3. 집합으로 사용하는 맵
  4. 반복과 순서
← Go Academy(으)로 돌아가기