요소 포함 여부 확인하기
Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 34번째.
이제 세트에 요소를 추가할 수 있게 되었으므로, 다음으로 필수적인 작업은 특정 요소가 세트에 존재하는지 확인하는 것입니다. 여기서 Go의 "comma ok" 관용구가 매우 유용하게 사용됩니다.
세트에 요소가 존재하는지 확인하려면 맵에서 키를 확인하는 것과 동일한 구문을 사용합니다:
_, ok := colors["red"]
if ok {
fmt.Println("Red is in the set")
} else {
fmt.Println("Red is not in the set")
}언더스코어 _는 실제 값(항상 빈 구조체임)에는 관심이 없기 때문에 사용됩니다. 우리는 키가 존재하는지 여부를 알려주는 ok 불리언 변수에만 관심이 있습니다.
더 간결한 코드를 위해 이 패턴을 if 문에서 직접 사용할 수도 있습니다:
if _, exists := colors["blue"]; exists {
fmt.Println("Blue is in the set")
}이 멤버십 테스트는 빠르고 효율적이며, Go의 최적화된 맵 구현을 활용하여 진정한 세트(set) 데이터 구조의 성능 이점을 제공합니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움Go의 set 관용구(idiom)를 사용하여 특정 인물이 프로젝트 팀의 구성원인지 확인하는 팀원 검증 시스템을 구축하세요. 이 챌린지는 set의 멤버십을 테스트하기 위해 comma ok 관용구를 사용하는 방법을 보여줍니다.
두 개의 입력을 받게 됩니다:
- 쉼표로 구분된 팀원 이름이 포함된 문자열 (예:
"Alice,Bob,Charlie,Diana,Eve") - 쉼표로 구분된 확인할 인물들이 포함된 문자열 (예:
"Bob,Frank,Alice,Grace,Charlie")
수행할 작업은 다음과 같습니다:
- Go의 관용구인
map[string]struct{}를 사용하여 팀원을 저장할 set을 생성합니다. - 첫 번째 입력 문자열을 쉼표로 분할하여 개별 팀원 이름을 파싱합니다.
- 빈 구조체 리터럴인
{}를 값으로 사용하여 각 팀원을 set에 추가합니다. - 두 번째 입력 문자열을 쉼표로 분할하여 검증할 인물 목록을 파싱합니다.
- 확인할 각 인물에 대해, comma ok 관용구인
_, ok := teamSet[person]를 사용하여 멤버십을 테스트합니다. - 확인 중인 각 인물에 대한 검증 결과를 표시합니다:
- 해당 인물이 팀에 있는 경우:
"[person] is on the team" - 해당 인물이 팀에 없는 경우:
"[person] is not on the team"
- 해당 인물이 팀에 있는 경우:
- 모든 인물을 확인한 후, 요약을 표시합니다:
"Team size: [team_member_count]""People checked: [people_checked_count]""Team members found: [found_count]""Non-team members: [not_found_count]"
입력 문자열을 쉼표로 분할하려면 strings 패키지를 사용하세요. 이 챌린지는 comma ok 관용구가 Go set에서 멤버십을 확인하는 안전하고 효율적인 방법을 제공하며, 값과 키의 존재 여부를 나타내는 불리언(boolean)을 모두 반환하는 방식을 보여줍니다.
치트 시트
집합(맵)에 요소가 존재하는지 확인하려면 "comma ok" 관용구를 사용하세요:
_, ok := colors["red"]
if ok {
fmt.Println("Red is in the set")
} else {
fmt.Println("Red is not in the set")
}밑줄 _은 키의 존재 여부를 나타내는 불리언 ok 변수에만 관심이 있으므로 값을 무시합니다.
이 패턴을 if 문에서 직접 사용할 수도 있습니다:
if _, exists := colors["blue"]; exists {
fmt.Println("Blue is in the set")
}직접 해보기
package main
import (
"fmt"
"strings"
)
func main() {
// 입력 읽기
var teamMembersInput string
var peopleToCheckInput string
fmt.Scanln(&teamMembersInput)
fmt.Scanln(&peopleToCheckInput)
// 입력 문자열 파싱
teamMembers := strings.Split(teamMembersInput, ",")
peopleToCheck := strings.Split(peopleToCheckInput, ",")
// TODO: 아래에 코드를 작성하세요
// map[string]struct{}를 사용하여 세트 생성
// 세트에 팀원 추가
// comma ok 관용구를 사용하여 각 인원 확인
// 확인 결과 및 요약 표시
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.