Elenco contatti di base
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 66 di 68.
Sfida
FacileCrea 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 è:
- Definire una struct
Contactcon tre campi stringa:Name,PhoneeEmail - Creare una funzione chiamata
addContactche accetta una slice di structContacte un nuovoContact, quindi restituisce una nuova slice con il contatto aggiunto - Creare una funzione chiamata
displayContactsche accetta una slice di structContacte stampa le informazioni di ogni contatto - Analizzare il primo input separandolo in corrispondenza delle virgole per ottenere le singole voci dei contatti
- Per ogni voce di contatto, separarla in corrispondenza dei due punti per estrarre nome, telefono ed email
- Creare struct
Contactdai dati analizzati e memorizzarle in una slice - Analizzare il secondo input separandolo in corrispondenza dei due punti per creare un nuovo contatto
- Visualizzare l'intestazione dell'applicazione:
"=== CONTACT MANAGEMENT SYSTEM ===" - Visualizzare i contatti iniziali usando la funzione
displayContactscon l'intestazione:"Initial contact list:" - Visualizzare il nuovo contatto che viene aggiunto:
"Adding new contact: [name] ([phone]) - [email]" - Usare la funzione
addContactper aggiungere il nuovo contatto alla slice - Visualizzare i contatti aggiornati usando la funzione
displayContactscon l'intestazione:"Updated contact list:" - Visualizzare le statistiche dei contatti:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- 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
1Flusso di controllo avanzato
Switch con `fallthrough`Uscire dai cicli annidatiContinuare un ciclo specificoL'istruzione `goto`Riepilogo - Controllo avanzato dei cicli4Progetto: semplice lista di attività
Configurazione del progettoAggiungere un’attività2Struct e metodi
Definire metodi sugli structReceiver per valoreReceiver con puntatoreScegliere i receiverMetodi vs funzioniRiepilogo - comportamento degli struct5Mappe in dettaglio
Mappe di structPuntatori come valori delle mappeVerificare le mappe nilConfrontare le mappeRiepilogo - Contatore della frequenza delle parole3Interfacce (le basi)
Che cos’è un’interfaccia?Definire un’interfacciaImplementare un’interfacciaUsare i tipi interfacciaInterfaccia vuotaAsserzioni di tipoSwitch di tipoRiepilogo: forme e comportamentiEsercitati da solo: Compilatore Go online