Menu
Coddy logo textTech

요소 포함 여부 확인하기

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) 데이터 구조의 성능 이점을 제공합니다.

challenge icon

챌린지

쉬움

Go의 set 관용구(idiom)를 사용하여 특정 인물이 프로젝트 팀의 구성원인지 확인하는 팀원 검증 시스템을 구축하세요. 이 챌린지는 set의 멤버십을 테스트하기 위해 comma ok 관용구를 사용하는 방법을 보여줍니다.

두 개의 입력을 받게 됩니다:

  • 쉼표로 구분된 팀원 이름이 포함된 문자열 (예: "Alice,Bob,Charlie,Diana,Eve")
  • 쉼표로 구분된 확인할 인물들이 포함된 문자열 (예: "Bob,Frank,Alice,Grace,Charlie")

수행할 작업은 다음과 같습니다:

  1. Go의 관용구인 map[string]struct{}를 사용하여 팀원을 저장할 set을 생성합니다.
  2. 첫 번째 입력 문자열을 쉼표로 분할하여 개별 팀원 이름을 파싱합니다.
  3. 빈 구조체 리터럴인 {}를 값으로 사용하여 각 팀원을 set에 추가합니다.
  4. 두 번째 입력 문자열을 쉼표로 분할하여 검증할 인물 목록을 파싱합니다.
  5. 확인할 각 인물에 대해, comma ok 관용구인 _, ok := teamSet[person]를 사용하여 멤버십을 테스트합니다.
  6. 확인 중인 각 인물에 대한 검증 결과를 표시합니다:
    • 해당 인물이 팀에 있는 경우: "[person] is on the team"
    • 해당 인물이 팀에 없는 경우: "[person] is not on the team"
  7. 모든 인물을 확인한 후, 요약을 표시합니다:
    • "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)을 모두 반환하는 방식을 보여줍니다.

직접 해보기

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 관용구를 사용하여 각 인원 확인
	// 확인 결과 및 요약 표시
	
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 & 흐름의 모든 레슨