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 votre base de gestion des tâches, vous allez maintenant implémenter la fonctionnalité principale pour 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 (slice) existante.
Note importante : Comme les noms de tâches peuvent contenir des espaces (comme "Buy groceries"), vous devrez utiliser bufio.Scanner pour lire des lignes entières d'entrée. La fonction fmt.Scanln s'arrête de lire au premier espace, ce qui tronquerait les noms de tâches contenant des espaces. Utilisez bufio.NewScanner(os.Stdin) et appelez scanner.Scan() suivi de 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 des noms de 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 dans le défi précédent avec les champsName(string) etCompleted(bool) - Créer une fonction appelée
addTaskqui prend une tranche de structuresTasket un nom de tâche (string) en paramètres - La fonction
addTaskdoit retourner une nouvelle tranche avec 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 avec des espaces - Créer une tranche initiale de tâches basée sur le nombre de tâches existantes spécifié dans la première entrée :
- Si le nombre est
"0", commencez avec une tranche vide - Si le nombre est supérieur à
"0", créez autant de tâches d'espace réservé 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 de 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 la tâche existante en premier, suivie des deux nouvelles tâches, et enfin le nombre total. Ce défi permet de pratiquer la manipulation des tranches avec la fonction append et démontre comment construire des fonctionnalités qui étendent 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 comportements