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

Sobre la base de los fundamentos 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"), tendrás que 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 consiste en:

  1. Definir la misma estructura Task del desafío anterior, con los campos Name (string) y Completed (bool)
  2. Crear una función llamada addTask que reciba como parámetros un slice de estructuras Task y un nombre de tarea (string)
  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 correctamente las líneas de entrada y gestionar nombres de tareas con espacios
  5. Crear un slice inicial de tareas basándote 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 tarea nueva al slice
  8. Imprimir cada tarea del slice final con el formato: "Task: [name], Completed: [true/false]"
  9. Imprimir el número total de tareas con 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 tareas nuevas y, finalmente, el número total. Este desafío practica la manipulación de slices con la función append y demuestra cómo crear una funcionalidad que amplía 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

Practica por tu cuenta: Compilador de Go online