Menu
Coddy logo textTech

Ver todas las tareas

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

challenge icon

Desafío

Fácil

Continuando con tu sistema de gestión de tareas, ahora implementarás la funcionalidad para mostrar todas las tareas en un formato fácil de usar. Este desafío se centra en iterar a través de tu colección de tareas y presentar cada tarea con su estado de finalización utilizando indicadores visuales claros.

Recibirás dos entradas:

  • Una cadena que representa el número de tareas (por ejemplo, "4")
  • Una cadena que contiene los datos de las tareas en el formato: "name1:status1,name2:status2,name3:status3" donde el estado es "true" o "false" (por ejemplo, "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

Tu tarea es:

  1. Definir la misma estructura Task de desafíos anteriores con los campos Name (string) y Completed (bool)
  2. Crear una función llamada viewAllTasks que reciba un slice de estructuras Task como parámetro
  3. Dentro de la función viewAllTasks, iterar a través del slice e imprimir cada tarea con el siguiente formato:
    • Para tareas completadas: "[x] [task_name]"
    • Para tareas incompletas: "[ ] [task_name]"
  4. Analizar los datos de las tareas de la segunda entrada para crear tu slice de tareas:
    • Dividir la entrada por comas para obtener las entradas de tareas individuales
    • Para cada entrada, dividir por dos puntos para separar el nombre y el estado
    • Convertir la cadena de estado a un booleano ("true" se convierte en true, "false" se convierte en false)
  5. Llamar a tu función viewAllTasks con el slice creado
  6. Después de mostrar todas las tareas, imprimir un resumen en el formato: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"

Por ejemplo, si tienes las tareas "Buy groceries:false,Call dentist:true,Finish project:false", tu salida debería mostrar cada tarea con las casillas de verificación correspondientes y luego mostrar el resumen con el recuento total y las estadísticas de finalización. Este desafío practica la iteración de slices, el formateo condicional con sentencias if y proporciona a los usuarios una visión clara del progreso de sus tareas.

Pruébalo tú mismo

package main

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

type Task struct {
	Name      string
	Completed bool
}

func viewAllTasks(tasks []Task) {
	// TODO: Implementar la función para mostrar todas las tareas
	// Para tareas completadas: "[x] [task_name]"
	// Para tareas incompletas: "[ ] [task_name]"
}

func main() {
	var numTasksStr string
	fmt.Scanln(&numTasksStr)
	numTasks, _ := strconv.Atoi(numTasksStr)

	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	taskData := scanner.Text()

	var tasks []Task

	// TODO: Analizar los datos de las tareas desde la cadena taskData
	// Dividir por comas para obtener las entradas de tareas individuales
	taskEntries := strings.Split(taskData, ",")
	_ = taskEntries

	// Para cada entrada, dividir por dos puntos para separar el nombre y el estado
	// Convertir la cadena de estado a booleano y crear estructuras Task

	// TODO: Llamar a la función viewAllTasks con la rebanada (slice) creada

	// TODO: Calcular e imprimir el resumen
	// Formato: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
	_ = tasks
	_ = numTasks
}

Todas las lecciones de Lógica y Flujo