Menu
Coddy logo textTech

Базовый список контактов

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

challenge icon

Задание

Легко

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

Вы получите два входных значения:

  • Строку, содержащую контактную информацию в формате "name1:phone1:email1,name2:phone2:email2,name3:phone3:email3" (например, "Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com")
  • Строку, содержащую новый контакт для добавления в формате "name:phone:email" (например, "David Wilson:555-0321:david@email.com")

Ваша задача:

  1. Определить структуру Contact с тремя строковыми полями: Name, Phone и Email
  2. Создать функцию с именем addContact, которая принимает срез структур Contact и новый Contact, а затем возвращает новый срез с добавленным контактом
  3. Создать функцию с именем displayContacts, которая принимает срез структур Contact и выводит информацию о каждом контакте
  4. Разобрать первый входной параметр, разделив его по запятым, чтобы получить отдельные записи контактов
  5. Для каждой записи контакта разделить ее по двоеточиям, чтобы извлечь имя, телефон и электронную почту
  6. Создать структуры Contact из разобранных данных и сохранить их в срезе
  7. Разобрать второй входной параметр, разделив его по двоеточиям, чтобы создать новый контакт
  8. Вывести заголовок приложения: "=== CONTACT MANAGEMENT SYSTEM ==="
  9. Вывести начальный список контактов, используя функцию displayContacts с заголовком: "Initial contact list:"
  10. Вывести сообщение о добавлении нового контакта: "Adding new contact: [name] ([phone]) - [email]"
  11. Использовать функцию addContact для добавления нового контакта в срез
  12. Вывести обновленный список контактов, используя функцию displayContacts с заголовком: "Updated contact list:"
  13. Вывести статистику контактов:
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. Вывести сообщение о завершении: "Contact management operations completed successfully"

Функция displayContacts должна выводить каждый контакт в формате: "[index]. [name] - Phone: [phone], Email: [email]", где индекс начинается с 1.

Используйте пакет strings для разделения входных строк и пакет fmt для форматированного вывода. Эта задача демонстрирует, как объединять структуры для организации данных, срезы для коллекций и функции для организации кода — фундаментальные паттерны, используемые в программировании на Go.

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

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

// TODO: Определите здесь вашу структуру Contact

// TODO: Реализуйте здесь функцию addContact

// TODO: Реализуйте здесь функцию displayContacts

func main() {
	// Чтение ввода с использованием bufio.Scanner для корректной обработки пробелов в именах
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	contactsInput := scanner.Text()
	
	scanner.Scan()
	newContactInput := scanner.Text()
	
	// TODO: Напишите ваш код ниже
	// Разберите входные данные контактов и создайте структуры Contact
	// Не забудьте проверить, достаточно ли элементов в срезе parts перед доступом
	// Разберите входные данные нового контакта
	// Выведите заголовок приложения
	// Выведите начальный список контактов
	// Добавьте новый контакт
	// Выведите обновленный список контактов
	// Выведите статистику
	// Выведите сообщение о завершении
}

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