Lista de contactos básica
Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 66 de 68.
Desafío
FácilCrea un sistema de gestión de contactos que demuestre cómo las estructuras, los slices y las funciones trabajan en conjunto para organizar y mostrar información de contactos. Este desafío pondrá a prueba tu capacidad para definir estructuras de datos personalizadas, gestionar colecciones de datos e implementar funciones para manipular esos datos.
Recibirás dos entradas:
- Una cadena que contiene información de contactos con el formato
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"(por ejemplo,"Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - Una cadena que contiene un nuevo contacto para añadir con el formato
"name:phone:email"(por ejemplo,"David Wilson:555-0321:david@email.com")
Tu tarea consiste en:
- Definir una estructura
Contactcon tres campos de tipo string:Name,PhoneyEmail - Crear una función llamada
addContactque reciba un slice de estructurasContacty un nuevoContact, y después devuelva un nuevo slice con el contacto añadido - Crear una función llamada
displayContactsque reciba un slice de estructurasContacte imprima la información de cada contacto - Analizar la primera entrada separándola por comas para obtener las entradas de contactos individuales
- Para cada entrada de contacto, separar por dos puntos para extraer el nombre, el teléfono y el correo electrónico
- Crear estructuras
Contacta partir de los datos analizados y almacenarlas en un slice - Analizar la segunda entrada separándola por dos puntos para crear un nuevo contacto
- Mostrar el encabezado de la aplicación:
"=== CONTACT MANAGEMENT SYSTEM ===" - Mostrar los contactos iniciales usando tu función
displayContactscon el encabezado:"Initial contact list:" - Mostrar el nuevo contacto que se añadirá:
"Adding new contact: [name] ([phone]) - [email]" - Usar tu función
addContactpara añadir el nuevo contacto al slice - Mostrar los contactos actualizados usando tu función
displayContactscon el encabezado:"Updated contact list:" - Mostrar las estadísticas de contactos:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Mostrar el mensaje de finalización:
"Contact management operations completed successfully"
La función displayContacts debe imprimir cada contacto con el formato: "[index]. [name] - Phone: [phone], Email: [email]", donde el índice comienza en 1.
Usa el paquete strings para separar las cadenas de entrada y el paquete fmt para la salida con formato. Este desafío demuestra cómo combinar estructuras para organizar datos, slices para colecciones y funciones para organizar el código: patrones fundamentales utilizados en toda la programación con Go.
Pruébalo tú mismo
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: Define tu estructura Contact aquí
// TODO: Implementa la función addContact aquí
// TODO: Implementa la función displayContacts aquí
func main() {
// Leer la entrada usando bufio.Scanner para manejar correctamente los espacios en los nombres
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: Escribe tu código a continuación
// Analizar la entrada de contactos y crear estructuras Contact
// Recuerda verificar si el slice de partes tiene suficientes elementos antes de acceder
// Analizar la entrada del nuevo contacto
// Mostrar el encabezado de la aplicación
// Mostrar los contactos iniciales
// Añadir el nuevo contacto
// Mostrar los contactos actualizados
// Mostrar estadísticas
// Mostrar mensaje de finalización
}Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientosPractica por tu cuenta: Compilador de Go online