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
这将执行代码并显示待办任务的列表。