Menu
Coddy logo textTech

Ajouter une tâche

Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 21 sur 68.

challenge icon

Défi

Facile

En 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 à :

  1. Définir la même structure Task que dans le défi précédent avec les champs Name (string) et Completed (bool)
  2. Créer une fonction appelée addTask qui prend une tranche de structures Task et un nom de tâche (string) en paramètres
  3. La fonction addTask doit retourner une nouvelle tranche avec la tâche ajoutée (la nouvelle tâche doit avoir Completed défini sur false)
  4. Utiliser bufio.Scanner pour lire correctement les lignes d'entrée afin de gérer les noms de tâches avec des espaces
  5. 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
  6. Analyser les noms de tâches séparés par des virgules de la deuxième entrée
  7. Utiliser votre fonction addTask pour ajouter chaque nouvelle tâche à la tranche
  8. Afficher chaque tâche de la tranche finale au format : "Task: [name], Completed: [true/false]"
  9. 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