Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Crea 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:

  1. Definir una estructura Contact con tres campos de tipo string: Name, Phone y Email
  2. Crear una función llamada addContact que reciba un slice de estructuras Contact y un nuevo Contact, y después devuelva un nuevo slice con el contacto añadido
  3. Crear una función llamada displayContacts que reciba un slice de estructuras Contact e imprima la información de cada contacto
  4. Analizar la primera entrada separándola por comas para obtener las entradas de contactos individuales
  5. Para cada entrada de contacto, separar por dos puntos para extraer el nombre, el teléfono y el correo electrónico
  6. Crear estructuras Contact a partir de los datos analizados y almacenarlas en un slice
  7. Analizar la segunda entrada separándola por dos puntos para crear un nuevo contacto
  8. Mostrar el encabezado de la aplicación: "=== CONTACT MANAGEMENT SYSTEM ==="
  9. Mostrar los contactos iniciales usando tu función displayContacts con el encabezado: "Initial contact list:"
  10. Mostrar el nuevo contacto que se añadirá: "Adding new contact: [name] ([phone]) - [email]"
  11. Usar tu función addContact para añadir el nuevo contacto al slice
  12. Mostrar los contactos actualizados usando tu función displayContacts con el encabezado: "Updated contact list:"
  13. Mostrar las estadísticas de contactos:
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. 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

Practica por tu cuenta: Compilador de Go online