Menu
Coddy logo textTech

Aggiungere un’attività

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

challenge icon

Sfida

Facile

Partendo 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 è:

  1. Definire la stessa struct Task della sfida precedente, con i campi Name (string) e Completed (bool)
  2. Creare una funzione chiamata addTask che accetti come parametri una slice di struct Task e un nome di attività (string)
  3. La funzione addTask dovrebbe restituire una nuova slice con l'attività aggiunta (la nuova attività dovrebbe avere Completed impostato su false)
  4. Usare bufio.Scanner per leggere correttamente le righe di input e gestire i nomi delle attività contenenti spazi
  5. 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
  6. Analizzare i nomi delle attività separati da virgole nel secondo input
  7. Usare la funzione addTask per aggiungere ogni nuova attività alla slice
  8. Stampare ogni attività nella slice finale nel formato: "Task: [name], Completed: [true/false]"
  9. 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

Esercitati da solo: Compilatore Go online