Visualizzare tutte le attività
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 22 di 68.
Sfida
FacileContinuando 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 è:
- Definire la stessa struct
Taskdelle sfide precedenti, con i campiName(string) eCompleted(bool) - Creare una funzione chiamata
viewAllTasksche accetta come parametro uno slice di structTask - 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]"
- Per le attività completate:
- 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"diventatrue,"false"diventafalse)
- Chiamare la funzione
viewAllTaskscon lo slice creato - 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
1Flusso di controllo avanzato
Switch con `fallthrough`Uscire dai cicli annidatiContinuare un ciclo specificoL'istruzione `goto`Riepilogo - Controllo avanzato dei cicli4Progetto: semplice lista di attività
Configurazione del progettoAggiungere un’attività2Struct e metodi
Definire metodi sugli structReceiver per valoreReceiver con puntatoreScegliere i receiverMetodi vs funzioniRiepilogo - comportamento degli struct5Mappe in dettaglio
Mappe di structPuntatori come valori delle mappeVerificare le mappe nilConfrontare le mappeRiepilogo - Contatore della frequenza delle parole3Interfacce (le basi)
Che cos’è un’interfaccia?Definire un’interfacciaImplementare un’interfacciaUsare i tipi interfacciaInterfaccia vuotaAsserzioni di tipoSwitch di tipoRiepilogo: forme e comportamentiEsercitati da solo: Compilatore Go online