Lista de Contatos Básica
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 66 de 68.
Desafio
FácilCrie um sistema de gerenciamento de contatos que demonstre como structs, slices e funções trabalham juntos para organizar e exibir informações de contato. Este desafio testará sua habilidade de definir estruturas de dados personalizadas, gerenciar coleções de dados e implementar funções para manipular esses dados.
Você receberá duas entradas:
- Uma string contendo informações de contato no formato
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"(ex:"Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - Uma string contendo um novo contato para adicionar no formato
"name:phone:email"(ex:"David Wilson:555-0321:david@email.com")
Sua tarefa é:
- Definir uma struct
Contactcom três campos do tipo string:Name,PhoneeEmail - Criar uma função chamada
addContactque recebe um slice de structsContacte um novoContact, e então retorna um novo slice com o contato adicionado - Criar uma função chamada
displayContactsque recebe um slice de structsContacte imprime as informações de cada contato - Analisar a primeira entrada dividindo-a por vírgulas para obter as entradas de contato individuais
- Para cada entrada de contato, dividir por dois-pontos para extrair nome, telefone e e-mail
- Criar structs
Contacta partir dos dados analisados e armazená-los em um slice - Analisar a segunda entrada dividindo-a por dois-pontos para criar um novo contato
- Exibir o cabeçalho da aplicação:
"=== CONTACT MANAGEMENT SYSTEM ===" - Exibir os contatos iniciais usando sua função
displayContactscom o cabeçalho:"Initial contact list:" - Exibir o novo contato que está sendo adicionado:
"Adding new contact: [name] ([phone]) - [email]" - Usar sua função
addContactpara adicionar o novo contato ao slice - Exibir os contatos atualizados usando sua função
displayContactscom o cabeçalho:"Updated contact list:" - Exibir estatísticas de contato:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Exibir a mensagem de conclusão:
"Contact management operations completed successfully"
A função displayContacts deve imprimir cada contato no formato: "[index]. [name] - Phone: [phone], Email: [email]" onde o índice começa em 1.
Use o pacote strings para dividir as strings de entrada e o pacote fmt para saída formatada. Este desafio demonstra como combinar structs para organização de dados, slices para coleções e funções para organização de código - padrões fundamentais usados em toda a programação Go.
Experimente você mesmo
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: Defina sua struct Contact aqui
// TODO: Implemente a função addContact aqui
// TODO: Implemente a função displayContacts aqui
func main() {
// Lê a entrada usando bufio.Scanner para lidar corretamente com espaços em nomes
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: Escreva seu código abaixo
// Analise a entrada de contatos e crie as structs Contact
// Lembre-se de verificar se o slice de partes tem elementos suficientes antes de acessar
// Analise a entrada do novo contato
// Exiba o cabeçalho da aplicação
// Exiba os contatos iniciais
// Adicione o novo contato
// Exiba os contatos atualizados
// Exiba as estatísticas
// Exiba a mensagem de conclusão
}Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos