Menu
Coddy logo textTech

Adicionando uma Tarefa

Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 21 de 68.

challenge icon

Desafio

Fácil

Com base na sua fundação de gerenciamento de tarefas, agora você implementará a funcionalidade principal para adicionar novas tarefas ao seu sistema. Este desafio foca na criação de uma função que expande sua lista de tarefas anexando novas tarefas ao slice existente.

Nota Importante: Como os nomes das tarefas podem conter espaços (como "Buy groceries"), você precisará usar bufio.Scanner para ler linhas inteiras de entrada. A função fmt.Scanln para de ler no primeiro espaço, o que quebraria nomes de tarefas com espaços. Use bufio.NewScanner(os.Stdin) e chame scanner.Scan() seguido de scanner.Text() para ler linhas completas.

Você receberá duas entradas:

  • Uma string representando o número de tarefas existentes (ex: "2")
  • Uma string contendo nomes de tarefas separados por vírgulas (ex: "Buy groceries,Call dentist,Finish project")

Sua tarefa é:

  1. Definir a mesma struct Task do desafio anterior com os campos Name (string) e Completed (bool)
  2. Criar uma função chamada addTask que recebe um slice de structs Task e um nome de tarefa (string) como parâmetros
  3. A função addTask deve retornar um novo slice com a tarefa adicionada (a nova tarefa deve ter Completed definido como false)
  4. Usar bufio.Scanner para ler as linhas de entrada corretamente para lidar com nomes de tarefas com espaços
  5. Criar um slice inicial de tarefas baseado no número de tarefas existentes especificado na primeira entrada:
    • Se o número for "0", comece com um slice vazio
    • Se o número for maior que "0", crie essa quantidade de tarefas de marcação (placeholders) com nomes como "Existing Task 1", "Existing Task 2", etc., todas marcadas como incompletas
  6. Analisar (parse) os nomes das tarefas separados por vírgula da segunda entrada
  7. Usar sua função addTask para adicionar cada nova tarefa ao slice
  8. Imprimir cada tarefa no slice final no formato: "Task: [name], Completed: [true/false]"
  9. Imprimir o número total de tarefas no formato: "Total tasks: [count]"

Por exemplo, se você tiver 1 tarefa existente e quiser adicionar "Buy groceries,Call dentist", sua saída deve mostrar a tarefa existente primeiro, seguida pelas duas novas tarefas e, finalmente, a contagem total. Este desafio pratica a manipulação de slices com a função append e demonstra como construir funcionalidades que estendem suas estruturas de dados.

Experimente você mesmo

package main

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

type Task struct {
	Name      string
	Completed bool
}

// TODO: Criar a função addTask aqui

func main() {
	// Criar scanner para ler as linhas de entrada
	scanner := bufio.NewScanner(os.Stdin)
	
	// Ler o número de tarefas existentes
	scanner.Scan()
	existingTasksStr := scanner.Text()
	
	// Ler os nomes das tarefas
	scanner.Scan()
	taskNamesStr := scanner.Text()
	
	// TODO: Completar a implementação
	// 1. Converter existingTasksStr para inteiro
	// 2. Criar o slice inicial com as tarefas existentes
	// 3. Analisar taskNamesStr e adicionar novas tarefas
	// 4. Imprimir todas as tarefas e a contagem total
}

Todas as lições de Lógica & Fluxo