Menu
Coddy logo textTech

Visualizzare tutte le attività

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 22 di 68.

challenge icon

Sfida

Facile

Continuando con il tuo sistema di gestione delle attività, ora implementerai la funzionalità per visualizzare tutte le attività in un formato intuitivo. Questa sfida si concentra sull'iterazione attraverso la raccolta di attività e sulla presentazione di ciascuna attività con il relativo stato di completamento, usando indicatori visivi chiari.

Riceverai due input:

  • Una stringa che rappresenta il numero di attività (ad es., "4")
  • Una stringa contenente i dati delle attività nel formato: "name1:status1,name2:status2,name3:status3" dove lo stato è "true" oppure "false" (ad es., "Buy groceries:false,Call dentist:true,Finish project:false,Review code:true")

Il tuo compito è:

  1. Definire la stessa struct Task delle sfide precedenti, con i campi Name (string) e Completed (bool)
  2. Creare una funzione chiamata viewAllTasks che accetta come parametro uno slice di struct Task
  3. All'interno della funzione viewAllTasks, iterare attraverso lo slice e stampare ogni attività nel formato seguente:
    • Per le attività completate: "[x] [task_name]"
    • Per le attività incomplete: "[ ] [task_name]"
  4. Analizzare i dati delle attività dal secondo input per creare il tuo slice di attività:
    • Suddividere l'input in base alle virgole per ottenere le singole voci delle attività
    • Per ogni voce, suddividerla in base ai due punti per separare il nome e lo stato
    • Convertire la stringa dello stato in un valore booleano ("true" diventa true, "false" diventa false)
  5. Chiamare la funzione viewAllTasks con lo slice creato
  6. Dopo aver visualizzato tutte le attività, stampare un riepilogo nel formato: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"

Ad esempio, se hai le attività "Buy groceries:false,Call dentist:true,Finish project:false", il tuo output dovrebbe mostrare ogni attività con le caselle di controllo appropriate e poi visualizzare il riepilogo con il conteggio totale e le statistiche di completamento. Questa sfida permette di esercitarsi nell'iterazione degli slice e nella formattazione condizionale con le istruzioni if, e offre agli utenti una panoramica chiara dei progressi nelle loro attività.

Provalo tu

package main

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

type Task struct {
	Name      string
	Completed bool
}

func viewAllTasks(tasks []Task) {
	// TODO: Implementa la funzione per visualizzare tutte le attività
	// Per le attività completate: "[x] [task_name]"
	// Per le attività non completate: "[ ] [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: Analizza i dati delle attività dalla stringa taskData
	// Dividi la stringa in corrispondenza delle virgole per ottenere le singole voci delle attività
	taskEntries := strings.Split(taskData, ",")
	_ = taskEntries

	// Per ogni voce, dividi la stringa in corrispondenza dei due punti per separare il nome dallo stato
	// Converti la stringa dello stato in un valore booleano e crea strutture Task

	// TODO: Chiama la funzione viewAllTasks con la slice creata

	// TODO: Calcola e stampa il riepilogo
	// Formato: "Total: [total_count] tasks ([completed_count] completed, [incomplete_count] remaining)"
	_ = tasks
	_ = numTasks
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Go online