Ajouter une tâche
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 21 sur 68.
Défi
FacileEn vous appuyant sur les bases de votre système de gestion des tâches, vous allez maintenant implémenter la fonctionnalité principale permettant d’ajouter de nouvelles tâches à votre système. Ce défi se concentre sur la création d’une fonction qui étend votre liste de tâches en ajoutant de nouvelles tâches à la tranche existante.
Remarque importante : Comme les noms de tâches peuvent contenir des espaces (comme « Acheter des courses »), vous devrez utiliser bufio.Scanner pour lire des lignes d’entrée entières. La fonction fmt.Scanln arrête la lecture au premier espace, ce qui interromprait les noms de tâches contenant des espaces. Utilisez bufio.NewScanner(os.Stdin) et appelez scanner.Scan(), puis scanner.Text() pour lire des lignes complètes.
Vous recevrez deux entrées :
- Une chaîne représentant le nombre de tâches existantes (par exemple,
"2") - Une chaîne contenant les noms des tâches séparés par des virgules (par exemple,
"Buy groceries,Call dentist,Finish project")
Votre tâche consiste à :
- Définir la même structure
Taskque lors du défi précédent, avec les champsName(string) etCompleted(bool) - Créer une fonction appelée
addTaskqui prend en paramètres une tranche de structuresTasket un nom de tâche (string) - La fonction
addTaskdoit renvoyer une nouvelle tranche contenant la tâche ajoutée (la nouvelle tâche doit avoirCompleteddéfini surfalse) - Utiliser
bufio.Scannerpour lire correctement les lignes d’entrée afin de gérer les noms de tâches contenant des espaces - Créer une tranche initiale de tâches en fonction du nombre de tâches existantes indiqué dans la première entrée :
- Si le nombre est
"0", commencer par une tranche vide - Si le nombre est supérieur à
"0", créer autant de tâches fictives, avec des noms comme"Existing Task 1","Existing Task 2", etc., toutes marquées comme incomplètes
- Si le nombre est
- Analyser les noms de tâches séparés par des virgules dans la deuxième entrée
- Utiliser votre fonction
addTaskpour ajouter chaque nouvelle tâche à la tranche - Afficher chaque tâche de la tranche finale au format :
"Task: [name], Completed: [true/false]" - Afficher le nombre total de tâches au format :
"Total tasks: [count]"
Par exemple, si vous avez 1 tâche existante et que vous souhaitez ajouter "Buy groceries,Call dentist", votre sortie doit afficher d’abord la tâche existante, suivie des deux nouvelles tâches, puis le nombre total. Ce défi vous permet de vous exercer à manipuler des tranches avec la fonction append et montre comment créer une fonctionnalité qui étend vos structures de données.
Essayez vous-même
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO : Créer la fonction addTask ici
func main() {
// Créer un scanner pour lire les lignes d'entrée
scanner := bufio.NewScanner(os.Stdin)
// Lire le nombre de tâches existantes
scanner.Scan()
existingTasksStr := scanner.Text()
// Lire les noms des tâches
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO : Compléter l'implémentation
// 1. Convertir existingTasksStr en entier
// 2. Créer une tranche (slice) initiale avec les tâches existantes
// 3. Analyser taskNamesStr et ajouter de nouvelles tâches
// 4. Afficher toutes les tâches et le nombre total
}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