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

118 阅读3分钟

作为一门广受欢迎的编程语言,GO语言在工程实践中发挥了重要的作用。本篇文章将介绍通过实现一个课后作业来展示GO语言的实践思路、代码及路径记录。

项目概述

我们的目标是实现一个简单的任务管理系统,用户可以添加、删除和查询任务。每个任务有一个唯一的ID、标题和描述。用户可以通过命令行界面与系统交互,在其中能够执行各种操作。

实现思路

1. 定义任务结构体

首先,我们需要定义一个任务的结构体,包括ID、标题和描述等属性。这样我们可以使用结构体创建不同的任务对象。

type Task struct {
    ID       int
    Title    string
    Description string
}

2. 添加任务

为了能够添加任务,我们可以创建一个任务管理器结构体,其中包含一个存储任务的切片。

type TaskManager struct {
    tasks []Task
}

然后我们可以在任务管理器中定义一个AddTask方法,它接受一个任务对象作为参数,将其添加到任务列表中。

func (tm *TaskManager) AddTask(t Task) {
    // 添加任务逻辑
}

3. 删除任务

类似地,我们可以在任务管理器中定义一个DeleteTask方法,接受一个任务ID作为参数,并根据ID在任务列表中删除对应的任务。

func (tm *TaskManager) DeleteTask(id int) {
    // 删除任务逻辑
}

4. 查询任务

为了能够查询任务,我们需要定义一个GetTasks方法,返回所有任务的列表。

func (tm *TaskManager) GetTasks() []Task {
    // 获取所有任务逻辑
}

5. 用户交互界面

最后,我们可以使用命令行界面来与用户进行交互。通过读取用户的输入,并根据输入执行相应的操作。

代码实现

在实现上述思路的基础上,我们可以编写以下代码:

// main.go
package main

import (
	"fmt"
	"os"
	"strconv"
)

func main() {
	taskManager := TaskManager{}

	for {
		fmt.Println("请输入指令:")
		fmt.Println("1. 添加任务")
		fmt.Println("2. 删除任务")
		fmt.Println("3. 查询任务")
		fmt.Println("0. 退出")

		var input string
		fmt.Scanln(&input)

		switch input {
		case "1":
			addTask(&taskManager)
		case "2":
			deleteTask(&taskManager)
		case "3":
			getTasks(&taskManager)
		case "0":
			os.Exit(0)
		default:
			fmt.Println("无效的指令")
		}
	}
}

func addTask(taskManager *TaskManager) {
	// 获取用户输入的任务信息
	fmt.Println("请输入任务ID:")
	var idInput string
	fmt.Scanln(&idInput)
	id, err := strconv.Atoi(idInput)
	if err != nil {
		fmt.Println("无效的ID")
		return
	}

	fmt.Println("请输入任务标题:")
	var title string
	fmt.Scanln(&title)

	fmt.Println("请输入任务描述:")
	var description string
	fmt.Scanln(&description)

	// 创建新任务
	task := Task{
		ID:          id,
		Title:       title,
		Description: description,
	}

	// 添加任务到任务管理器
	taskManager.AddTask(task)
	fmt.Println("任务添加成功!")
}

func deleteTask(taskManager *TaskManager) {
	// 获取用户输入的要删除任务的ID
	fmt.Println("请输入要删除的任务ID:")
	var idInput string
	fmt.Scanln(&idInput)
	id, err := strconv.Atoi(idInput)
	if err != nil {
		fmt.Println("无效的ID")
		return
	}

	// 删除任务
	taskManager.DeleteTask(id)
	fmt.Println("任务删除成功!")
}

func getTasks(taskManager *TaskManager) {
	// 查询并展示所有任务列表
	tasks := taskManager.GetTasks()
	for _, task := range tasks {
		fmt.Println("任务ID:", task.ID)
		fmt.Println("标题:", task.Title)
		fmt.Println("描述:", task.Description)
		fmt.Println("---------")
	}
}

路径记录

在项目的开发过程中,我们需要创建以下文件和目录:

  • main.go: 主程序入口文件。
  • 其他GO源代码文件:包含任务结构体和任务管理器等相关代码。

总结

通过这个简单的任务管理系统的实践,我们展示了如何使用GO语言进行工程实践。我们首先定义了任务结构体和任务管理器,然后实现了添加、删除和查询任务的功能。最后,我们使用命令行界面与用户进行交互。希望这篇文章能帮助你更好地理解GO语言的实践过程和思路。