Menu
Coddy logo textTech

Elenco contatti di base

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 66 di 68.

challenge icon

Sfida

Facile

Crea un sistema di gestione dei contatti che dimostri come struct, slice e funzioni collaborano per organizzare e visualizzare le informazioni dei contatti. Questa sfida metterà alla prova la tua capacità di definire strutture dati personalizzate, gestire raccolte di dati e implementare funzioni per manipolare tali dati.

Riceverai due input:

  • Una stringa contenente informazioni sui contatti nel formato "name1:phone1:email1,name2:phone2:email2,name3:phone3:email3" (ad es., "Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com")
  • Una stringa contenente un nuovo contatto da aggiungere nel formato "name:phone:email" (ad es., "David Wilson:555-0321:david@email.com")

Il tuo compito è:

  1. Definire una struct Contact con tre campi stringa: Name, Phone e Email
  2. Creare una funzione chiamata addContact che accetta una slice di struct Contact e un nuovo Contact, quindi restituisce una nuova slice con il contatto aggiunto
  3. Creare una funzione chiamata displayContacts che accetta una slice di struct Contact e stampa le informazioni di ogni contatto
  4. Analizzare il primo input separandolo in corrispondenza delle virgole per ottenere le singole voci dei contatti
  5. Per ogni voce di contatto, separarla in corrispondenza dei due punti per estrarre nome, telefono ed email
  6. Creare struct Contact dai dati analizzati e memorizzarle in una slice
  7. Analizzare il secondo input separandolo in corrispondenza dei due punti per creare un nuovo contatto
  8. Visualizzare l'intestazione dell'applicazione: "=== CONTACT MANAGEMENT SYSTEM ==="
  9. Visualizzare i contatti iniziali usando la funzione displayContacts con l'intestazione: "Initial contact list:"
  10. Visualizzare il nuovo contatto che viene aggiunto: "Adding new contact: [name] ([phone]) - [email]"
  11. Usare la funzione addContact per aggiungere il nuovo contatto alla slice
  12. Visualizzare i contatti aggiornati usando la funzione displayContacts con l'intestazione: "Updated contact list:"
  13. Visualizzare le statistiche dei contatti:
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. Visualizzare il messaggio di completamento: "Contact management operations completed successfully"

La funzione displayContacts dovrebbe stampare ogni contatto nel formato: "[index]. [name] - Phone: [phone], Email: [email]", dove l'indice parte da 1.

Usa il pacchetto strings per separare le stringhe di input e il pacchetto fmt per l'output formattato. Questa sfida dimostra come combinare struct per organizzare i dati, slice per le raccolte e funzioni per organizzare il codice: schemi fondamentali usati in tutta la programmazione Go.

Provalo tu

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

// TODO: Definisci qui la struct Contact

// TODO: Implementa qui la funzione addContact

// TODO: Implementa qui la funzione displayContacts

func main() {
	// Leggi l'input usando bufio.Scanner per gestire correttamente gli spazi nei nomi
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	contactsInput := scanner.Text()
	
	scanner.Scan()
	newContactInput := scanner.Text()
	
	// TODO: Scrivi il tuo codice qui sotto
	// Analizza l'input dei contatti e crea struct Contact
	// Ricorda di verificare che la slice parts contenga abbastanza elementi prima di accedervi
	// Analizza l'input del nuovo contatto
	// Mostra l'intestazione dell'applicazione
	// Mostra i contatti iniziali
	// Aggiungi il nuovo contatto
	// Mostra i contatti aggiornati
	// Mostra le statistiche
	// Mostra il messaggio di completamento
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Go online