GO语言工程实践课后作业笔记|青训营

76 阅读1分钟

GO语言工程实践课后作业笔记

实现思路

本次作业要求我们实现一个简单的待办事项(Todo)应用,其中需要实现添加任务、完成任务以及列出所有任务的功能。我们将采用GO语言来完成这个任务。

数据结构设计

首先,我们需要一个数据结构来表示待办任务。我们可以使用一个包含任务描述和完成状态的结构体。

goCopy code
type Task struct {
    Description string
    Done        bool
}

添加任务

我们需要一个函数来添加新的任务到任务列表中。这个函数应该接受任务描述作为参数,创建一个新的任务对象,并将其添加到任务列表中。

goCopy code
func addTask(tasks []*Task, description string) []*Task {
    newTask := &Task{
        Description: description,
        Done:        false,
    }
    return append(tasks, newTask)
}

完成任务

为了标记任务为已完成,我们需要一个函数来更新任务的完成状态。

goCopy code
func completeTask(tasks []*Task, index int) {
    if index >= 0 && index < len(tasks) {
        tasks[index].Done = true
    }
}

列出任务

最后,我们需要一个函数来列出所有的任务,包括它们的描述和完成状态。

goCopy code
func listTasks(tasks []*Task) {
    fmt.Println("Todo List:")
    for i, task := range tasks {
        status := " "
        if task.Done {
            status = "X"
        }
        fmt.Printf("[%s] %d. %s\n", status, i+1, task.Description)
    }
}

完整代码示例

以下是完整的代码示例,将上述函数放在一起并添加必要的导入。

goCopy code
package main

import (
    "fmt"
)

type Task struct {
    Description string
    Done        bool
}

func addTask(tasks []*Task, description string) []*Task {
    newTask := &Task{
        Description: description,
        Done:        false,
    }
    return append(tasks, newTask)
}

func completeTask(tasks []*Task, index int) {
    if index >= 0 && index < len(tasks) {
        tasks[index].Done = true
    }
}

func listTasks(tasks []*Task) {
    fmt.Println("Todo List:")
    for i, task := range tasks {
        status := " "
        if task.Done {
            status = "X"
        }
        fmt.Printf("[%s] %d. %s\n", status, i+1, task.Description)
    }
}

func main() {
    var tasks []*Task

    tasks = addTask(tasks, "Buy groceries")
    tasks = addTask(tasks, "Go to the gym")

    listTasks(tasks)

    completeTask(tasks, 0)

    listTasks(tasks)
}

路径记录

我将代码保存在名为 todo.go 的文件中,并将其放置在一个名为 todo-app 的文件夹中。我在命令行中进入 todo-app 目录,然后使用以下命令来运行程序:

shCopy code
go run todo.go

这将执行代码并显示待办任务的列表。