Liste de contacts basique
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 66 sur 68.
Défi
FacileCréez un système de gestion des contacts qui montre comment les structures, les slices et les fonctions fonctionnent ensemble pour organiser et afficher les informations de contact. Ce défi mettra à l’épreuve votre capacité à définir des structures de données personnalisées, à gérer des collections de données et à implémenter des fonctions pour manipuler ces données.
Vous recevrez deux entrées :
- Une chaîne contenant les informations de contact au format
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"(par exemple,"Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - Une chaîne contenant un nouveau contact à ajouter au format
"name:phone:email"(par exemple,"David Wilson:555-0321:david@email.com")
Votre tâche consiste à :
- Définir une structure
Contactavec trois champs de type chaîne :Name,PhoneetEmail - Créer une fonction appelée
addContactqui reçoit une slice de structuresContactet un nouveauContact, puis renvoie une nouvelle slice contenant le contact ajouté - Créer une fonction appelée
displayContactsqui reçoit une slice de structuresContactet affiche les informations de chaque contact - Analyser la première entrée en la divisant sur les virgules afin d’obtenir les entrées de contact individuelles
- Pour chaque entrée de contact, la diviser sur les deux-points afin d’extraire le nom, le téléphone et l’adresse e-mail
- Créer des structures
Contactà partir des données analysées et les stocker dans une slice - Analyser la deuxième entrée en la divisant sur les deux-points afin de créer un nouveau contact
- Afficher l’en-tête de l’application :
"=== CONTACT MANAGEMENT SYSTEM ===" - Afficher les contacts initiaux à l’aide de votre fonction
displayContactsavec l’en-tête :"Initial contact list:" - Afficher le nouveau contact en cours d’ajout :
"Adding new contact: [name] ([phone]) - [email]" - Utiliser votre fonction
addContactpour ajouter le nouveau contact à la slice - Afficher les contacts mis à jour à l’aide de votre fonction
displayContactsavec l’en-tête :"Updated contact list:" - Afficher les statistiques des contacts :
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- Afficher le message de fin :
"Contact management operations completed successfully"
La fonction displayContacts doit afficher chaque contact au format suivant : "[index]. [name] - Phone: [phone], Email: [email]", où l’index commence à 1.
Utilisez le package strings pour diviser les chaînes d’entrée et le package fmt pour produire une sortie formatée. Ce défi montre comment combiner les structures pour organiser les données, les slices pour les collections et les fonctions pour organiser le code — des modèles fondamentaux utilisés dans toute la programmation Go.
Essayez vous-même
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: Définissez votre structure Contact ici
// TODO: Implémentez la fonction addContact ici
// TODO: Implémentez la fonction displayContacts ici
func main() {
// Lire l'entrée en utilisant bufio.Scanner pour gérer correctement les espaces dans les noms
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: Écrivez votre code ci-dessous
// Analyser l'entrée des contacts et créer des structures Contact
// N'oubliez pas de vérifier si la tranche (slice) parts a assez d'éléments avant d'y accéder
// Analyser l'entrée du nouveau contact
// Afficher l'en-tête de l'application
// Afficher les contacts initiaux
// Ajouter le nouveau contact
// Afficher les contacts mis à jour
// Afficher les statistiques
// Afficher le message de fin
}Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportementsEntraînez-vous par vous-même : Compilateur Go en ligne