Menu
Coddy logo textTech

Añadir una tarea

Parte de la sección Lógica y Flujo del Journey de GO de Coddy — lección 21 de 68.

challenge icon

Desafío

Fácil

Basándote en tu base de gestión de tareas, ahora implementarás la funcionalidad principal para añadir nuevas tareas a tu sistema. Este desafío se centra en crear una función que amplíe tu lista de tareas añadiendo nuevas tareas al slice existente.

Nota importante: Dado que los nombres de las tareas pueden contener espacios (como "Buy groceries"), necesitarás usar bufio.Scanner para leer líneas completas de entrada. La función fmt.Scanln deja de leer en el primer espacio, lo que rompería los nombres de tareas con espacios. Usa bufio.NewScanner(os.Stdin) y llama a scanner.Scan() seguido de scanner.Text() para leer líneas completas.

Recibirás dos entradas:

  • Una cadena que representa el número de tareas existentes (por ejemplo, "2")
  • Una cadena que contiene nombres de tareas separados por comas (por ejemplo, "Buy groceries,Call dentist,Finish project")

Tu tarea es:

  1. Definir el mismo struct Task del desafío anterior con los campos Name (string) y Completed (bool)
  2. Crear una función llamada addTask que reciba un slice de structs Task y un nombre de tarea (string) como parámetros
  3. La función addTask debe devolver un nuevo slice con la tarea añadida (la nueva tarea debe tener Completed establecido en false)
  4. Usar bufio.Scanner para leer las líneas de entrada correctamente y así manejar nombres de tareas con espacios
  5. Crear un slice inicial de tareas basado en el número de tareas existentes especificado en la primera entrada:
    • Si el número es "0", comienza con un slice vacío
    • Si el número es mayor que "0", crea esa cantidad de tareas de marcador de posición con nombres como "Existing Task 1", "Existing Task 2", etc., todas marcadas como incompletas
  6. Analizar los nombres de tareas separados por comas de la segunda entrada
  7. Usar tu función addTask para añadir cada nueva tarea al slice
  8. Imprimir cada tarea del slice final en el formato: "Task: [name], Completed: [true/false]"
  9. Imprimir el número total de tareas en el formato: "Total tasks: [count]"

Por ejemplo, si tienes 1 tarea existente y quieres añadir "Buy groceries,Call dentist", tu salida debería mostrar primero la tarea existente, seguida de las dos nuevas tareas y, finalmente, el recuento total. Este desafío practica la manipulación de slices con la función append y demuestra cómo construir una funcionalidad que extiende tus estructuras de datos.

Pruébalo tú mismo

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

type Task struct {
	Name      string
	Completed bool
}

// TODO: Crear la función addTask aquí

func main() {
	// Crear un escáner para leer líneas de entrada
	scanner := bufio.NewScanner(os.Stdin)
	
	// Leer el número de tareas existentes
	scanner.Scan()
	existingTasksStr := scanner.Text()
	
	// Leer los nombres de las tareas
	scanner.Scan()
	taskNamesStr := scanner.Text()
	
	// TODO: Completar la implementación
	// 1. Convertir existingTasksStr a entero
	// 2. Crear el slice inicial con las tareas existentes
	// 3. Analizar taskNamesStr y añadir nuevas tareas
	// 4. Imprimir todas las tareas y el recuento total
}

Todas las lecciones de Lógica y Flujo