Простой список контактов
Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 66 из 68.
Задание
ЛегкоСоздай систему управления контактами, которая демонстрирует, как структуры, срезы и функции работают вместе для организации и отображения контактной информации. Это задание проверит твою способность определять пользовательские структуры данных, управлять коллекциями данных и реализовывать функции для обработки этих данных.
Тебе будут предоставлены два входных значения:
- Строка с контактной информацией в формате
"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")
Твоя задача:
- Определить структуру
Contactс тремя строковыми полями:Name,PhoneиEmail - Создать функцию с именем
addContact, которая принимает срез структурContactи новыйContact, а затем возвращает новый срез с добавленным контактом - Создать функцию с именем
displayContacts, которая принимает срез структурContactи выводит информацию о каждом контакте - Разобрать первый ввод, разделив его по запятым, чтобы получить отдельные записи контактов
- Для каждой записи контакта разделить её по двоеточиям, чтобы извлечь имя, телефон и адрес электронной почты
- Создать структуры
Contactиз разобранных данных и сохранить их в срезе - Разобрать второй ввод, разделив его по двоеточиям, чтобы создать новый контакт
- Вывести заголовок приложения:
"=== CONTACT MANAGEMENT SYSTEM ===" - Вывести исходные контакты с помощью функции
displayContactsи заголовка:"Initial contact list:" - Вывести добавляемый новый контакт:
"Adding new contact: [name] ([phone]) - [email]" - Использовать функцию
addContact, чтобы добавить новый контакт в срез - Вывести обновлённые контакты с помощью функции
displayContactsи заголовка:"Updated contact list:" - Вывести статистику контактов:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Вывести сообщение о завершении:
"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 достаточно элементов, прежде чем обращаться к ним
// Разберите введённые данные о новом контакте
// Выведите заголовок приложения
// Выведите исходный список контактов
// Добавьте новый контакт
// Выведите обновлённый список контактов
// Выведите статистику
// Выведите сообщение о завершении
}Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком
Оператор switch с `fallthrough`Выход из вложенных цикловПереход к следующей итерации конкретного циклаОператор `goto`Повторение: расширенное управление циклами4Проект: простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели-значенияПолучатели-указателиВыбор получателейМетоды и функцииПовторение: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картПовторение — счётчик частоты слов8Проект: простой складской учёт
Обзор проектаПроверка запасов3Интерфейсы (основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование типов интерфейсовПустой интерфейсУтверждения типовПереключатель типовПовторение — формы и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go