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 fundação do seu sistema de gerenciamento de tarefas, agora você implementará a funcionalidade principal para adicionar novas tarefas ao sistema. Este desafio se concentra na criação de uma função que amplia sua lista de tarefas adicionando novas tarefas à fatia existente.

Observação importante: Como os nomes das tarefas podem conter espaços (como "Buy groceries"), você precisará usar bufio.Scanner para ler linhas completas da entrada. A função fmt.Scanln para de ler no primeiro espaço, o que interromperia a leitura de 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 que representa o número de tarefas existentes (por exemplo, "2")
  • Uma string contendo nomes de tarefas separados por vírgulas (por exemplo, "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 receba uma fatia de structs Task e um nome de tarefa (string) como parâmetros
  3. A função addTask deve retornar uma nova fatia com a tarefa adicionada (a nova tarefa deve ter Completed definido como false)
  4. Usar bufio.Scanner para ler corretamente as linhas de entrada e lidar com nomes de tarefas que contenham espaços
  5. Criar uma fatia inicial de tarefas com base no número de tarefas existentes especificado na primeira entrada:
    • Se o número for "0", começar com uma fatia vazia
    • Se o número for maior que "0", criar essa quantidade de tarefas de preenchimento com nomes como "Existing Task 1", "Existing Task 2", etc., todas marcadas como incompletas
  6. Analisar os nomes de tarefas separados por vírgulas da segunda entrada
  7. Usar sua função addTask para adicionar cada nova tarefa à fatia
  8. Imprimir cada tarefa da fatia 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 deverá mostrar primeiro a tarefa existente, seguida pelas duas novas tarefas e, por fim, a contagem total. Este desafio pratica a manipulação de fatias com a função append e demonstra como criar uma funcionalidade que amplia 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

Pratique por conta própria: Compilador de Go online