Menu
Coddy logo textTech

Проверка наличия элемента

Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 34 из 68.

Теперь, когда ты умеешь добавлять элементы в множество, следующая важная операция — проверка того, существует ли определённый элемент в множестве. Здесь идиома Go «comma ok» становится невероятно полезной.

Чтобы проверить, существует ли элемент в вашем наборе, используйте такой же синтаксис, как при проверке наличия ключа в map:

_, 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")
}

Эта проверка принадлежности выполняется быстро и эффективно, используя оптимизированную реализацию map в Go, чтобы обеспечить преимущества производительности настоящей структуры данных множества.

challenge icon

Задание

Легко

Создай систему verification участников team, которая проверяет, входят ли определённые люди в team проекта, используя идиому множества Go. Эта задача демонстрирует, как использовать идиому comma ok для проверки членства в множестве.

Тебе будут предоставлены два входных значения:

  • Значение типа string, содержащее участников team, разделённых запятыми (например, "Alice,Bob,Charlie,Diana,Eve")
  • Значение типа string, содержащее людей для проверки, разделённых запятыми (например, "Bob,Frank,Alice,Grace,Charlie")

Твоя задача:

  1. Create множество с использованием идиомы Go map[string]struct{}, чтобы хранить участников team
  2. Parse первое входное значение, разделив его по запятым, чтобы получить отдельные имена участников team
  3. Add каждого участника team в своё множество, используя литерал пустой структуры {} в качестве значения
  4. Parse второе входное значение, разделив его по запятым, чтобы получить список людей для verification
  5. Для каждого проверяемого человека используй идиому comma ok _, ok := teamSet[person], чтобы проверить членство
  6. Display results verification для каждого проверяемого человека:
    • Если человек входит в team: "[person] is on the team"
    • Если человек не входит в team: "[person] is not on the team"
  7. После проверки всех людей Display summary:
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

Используй пакет strings, чтобы разделить входные значения string по запятым. Эта задача демонстрирует, как идиома comma ok предоставляет безопасный и эффективный способ проверки членства в множестве Go, возвращая одновременно значение и логическое значение, указывающее, существует ли ключ.

Попробуйте сами

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Проверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Go