Aggiungere un’attività
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 21 di 68.
Sfida
FacilePartendo dalle basi della gestione delle attività, ora implementerai la funzionalità principale per aggiungere nuove attività al tuo sistema. Questa sfida si concentra sulla creazione di una funzione che amplia il tuo elenco di attività aggiungendone di nuove alla slice esistente.
Nota importante: poiché i nomi delle attività possono contenere spazi (come "Buy groceries"), dovrai usare bufio.Scanner per leggere intere righe di input. La funzione fmt.Scanln smette di leggere al primo spazio, il che causerebbe problemi con i nomi delle attività contenenti spazi. Usa bufio.NewScanner(os.Stdin) e chiama scanner.Scan() seguito da scanner.Text() per leggere righe complete.
Riceverai due input:
- Una stringa che rappresenta il numero di attività esistenti (ad es.,
"2") - Una stringa contenente i nomi delle attività separati da virgole (ad es.,
"Buy groceries,Call dentist,Finish project")
Il tuo compito è:
- Definire la stessa struct
Taskdella sfida precedente, con i campiName(string) eCompleted(bool) - Creare una funzione chiamata
addTaskche accetti come parametri una slice di structTaske un nome di attività (string) - La funzione
addTaskdovrebbe restituire una nuova slice con l'attività aggiunta (la nuova attività dovrebbe avereCompletedimpostato sufalse) - Usare
bufio.Scannerper leggere correttamente le righe di input e gestire i nomi delle attività contenenti spazi - Creare una slice iniziale di attività in base al numero di attività esistenti specificato nel primo input:
- Se il numero è
"0", iniziare con una slice vuota - Se il numero è maggiore di
"0", creare altrettante attività segnaposto con nomi come"Existing Task 1","Existing Task 2", ecc., tutte contrassegnate come incomplete
- Se il numero è
- Analizzare i nomi delle attività separati da virgole nel secondo input
- Usare la funzione
addTaskper aggiungere ogni nuova attività alla slice - Stampare ogni attività nella slice finale nel formato:
"Task: [name], Completed: [true/false]" - Stampare il numero totale di attività nel formato:
"Total tasks: [count]"
Per esempio, se hai 1 attività esistente e vuoi aggiungere "Buy groceries,Call dentist", l'output dovrebbe mostrare prima l'attività esistente, seguita dalle due nuove attività e infine il conteggio totale. Questa sfida permette di esercitarsi nella manipolazione delle slice con la funzione append e mostra come creare funzionalità che estendono le tue strutture dati.
Provalo tu
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Task struct {
Name string
Completed bool
}
// TODO: Crea qui la funzione addTask
func main() {
// Crea uno scanner per leggere le righe di input
scanner := bufio.NewScanner(os.Stdin)
// Leggi il numero di attività esistenti
scanner.Scan()
existingTasksStr := scanner.Text()
// Leggi i nomi delle attività
scanner.Scan()
taskNamesStr := scanner.Text()
// TODO: Completa l'implementazione
// 1. Converti existingTasksStr in un intero
// 2. Crea uno slice iniziale con le attività esistenti
// 3. Analizza taskNamesStr e aggiungi nuove attività
// 4. Stampa tutte le attività e il conteggio totale
}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