33 简易项目实战之编写Go代码

在上一篇中,我们进行了项目需求分析,确定了简易项目的基本功能和结构。本篇将着重于如何在Go语言中编写符合这些需求的代码,构建完整的代码解决方案。我们的项目是一个简单的命令行待办事项(To-Do)管理工具。我们将逐步编写代码,确保每一部分都是清晰且易于理解的。

项目结构

在开始编写代码之前,让我们首先确定项目的基本结构。我们将创建以下目录和文件:

1
2
3
todo/
├── main.go
└── todo.go
  • main.go:程序的入口文件,将处理用户交互。
  • todo.go:包含待办事项的管理逻辑。

编写代码

1. 创建 todo.go

首先,我们在 todo.go 文件中定义待办事项的结构以及相关的方法。我们要实现一个简单的待办事项管理,包括添加、列出和删除待办事项。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// todo.go
package main

import (
"fmt"
)

type Todo struct {
ID int
Task string
}

var todos []Todo // 用于存储待办事项
var nextID int // 用于跟踪下一个待办事项的ID

// AddTodo 添加一个新的待办事项
func AddTodo(task string) {
nextID++
todo := Todo{ID: nextID, Task: task}
todos = append(todos, todo)
fmt.Println("添加待办事项:", task)
}

// ListTodos 列出所有待办事项
func ListTodos() {
fmt.Println("当前待办事项:")
for _, todo := range todos {
fmt.Printf("%d: %s\n", todo.ID, todo.Task)
}
}

// RemoveTodo 删除待办事项
func RemoveTodo(id int) {
for i, todo := range todos {
if todo.ID == id {
todos = append(todos[:i], todos[i+1:]...) // 删除指定ID的待办事项
fmt.Println("已删除待办事项:", id)
return
}
}
fmt.Println("待办事项未找到:", id)
}

2. 创建 main.go

接下来,我们在 main.go 中实现用户交互逻辑。用户可以通过命令行输入来添加、列出和删除待办事项。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// main.go
package main

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

func main() {
scanner := bufio.NewScanner(os.Stdin)

for {
fmt.Print("请输入命令(add / list / remove / exit):")
scanner.Scan()
command := scanner.Text()

switch {
case strings.HasPrefix(command, "add "):
task := strings.TrimPrefix(command, "add ")
AddTodo(task)
case command == "list":
ListTodos()
case strings.HasPrefix(command, "remove "):
idStr := strings.TrimPrefix(command, "remove ")
id, err := strconv.Atoi(idStr)
if err == nil {
RemoveTodo(id)
} else {
fmt.Println("无效的ID:", idStr)
}
case command == "exit":
fmt.Println("退出程序...")
return
default:
fmt.Println("无效命令,请重新输入。")
}
}
}

3. 代码解释

  • 结构体和变量:我们定义了一个 Todo 结构体来表示待办事项,并使用一个切片 todos 来存储所有待办事项。同时,我们用 nextID 来自动生成待办事项的ID。

  • 函数实现

    • AddTodo(task string):用于添加待办事项。
    • ListTodos():列出目前所有的待办事项。
    • RemoveTodo(id int):根据ID删除相应的待办事项。
  • 用户输入处理:在 main.go 中,我们用 bufio.Scanner 处理命令行输入,通过不同的命令触发相应的功能。

运行与调试

在下一篇中,我们将探讨如何运行和调试这个简单的Go项目,验证其正确性并确保稳定性。

通过以上步骤,我们完成了简易项目中的代码编写部分,确保代码符合上篇需求分析中的设计。希望大家能在实践中逐步掌握Go语言的基本语法和项目结构设计,为后续进阶学习打下坚实的基础。

33 简易项目实战之编写Go代码

https://zglg.work/go-zero/33/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论