Menu
CoddyTech

Простой список контактов

Часть раздела Логика и управление потоком путешествия по 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 достаточно элементов, прежде чем обращаться к ним
	// Разберите введённые данные о новом контакте
	// Выведите заголовок приложения
	// Выведите исходный список контактов
	// Добавьте новый контакт
	// Выведите обновлённый список контактов
	// Выведите статистику
	// Выведите сообщение о завершении
}

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

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