1、编写测试以确保新功能按预期工作。
在运行测试前,若存在之前测试遗留的 .todo.json 文件,需将其删除,命令为:
$ rm .todo.json
随后运行测试以确保工具按预期工作,命令为:
$ go test -v
之后可尝试改进后的工具,示例命令如下:
$ go run main.go -list
$ go run main.go -task "One ToDo item"
$ go run main.go -task "Another ToDo item"
$ go run main.go -list
$ go run main.go -complete 1
$ go run main.go -list
对于Markdown预览工具,可对每个函数编写单独的单元测试,并使用集成测试来测试 run 函数。
对于需要文件的函数测试,可使用如 黄金文件 等技术。
对于初始CLI实现的测试,可利用Go的 os/exec 包编写集成测试,通过 TestMain 函数进行额外的设置和清理工作。
2、实现 -del 标志以从列表中删除一个项目。使用 API 中的 Delete 方法来执行此操作。
在 interacting/todo/todo.go 文件中已定义了 Delete 方法用于从列表中删除 ToDo 项目:
func (l *List) Delete(i int) error {
ls := *l
if i <= 0 || i > len(ls) {
return fmt.Errorf("Item %d does not exist", i)
}
*l = append(ls[:i-1], ls[i:]...)
return nil
}
在 apis/todoClient.v3/cmd/del.go 文件中更新了 delCmd 命令,并定义了 delAction 函数来执行删除操作,通过将字符串参数转换为整数,调用 deleteItem 函数进行 REST API 调用以删除项目,并使用 printDel 函数打印结果。
3、添加另一个标志以启用详细输出,显示日期/时间等信息。
要添加一个标志以启用详细输出,显示日期/时间等信息,可按以下步骤操作:
- 确保已导入
flag包。 - 在
main函数中定义一个新的布尔标志,用于启用详细输出。 - 调用
flag.Parse()解析命令行标志。 - 根据标志的值决定是否输出详细信息。
示例代码如下:
import (
"flag"
"fmt"
"time"
)
func main() {
verbose := flag.Bool("verbose", false, "Enable verbose output with date/time")
flag.Parse()
if *verbose {
now := time.Now()
fmt.Printf("Verbose output enabled. Current date/time: %s\n", now.Format("2006-01-02 15:04:05"))
}
// 其他代码
}
在上述代码中,定义了一个名为 verbose 的布尔标志,默认值为 false 。如果用户在命令行中使用 -verbose 选项, *verbose 将为 true ,程序将输出当前的日期和时间。
4、添加另一个标志以防止显示已完成的项目。
可以在 main 函数中添加一个新的布尔类型标志来实现此功能。示例代码如下:
在 interacting/todo.v1/cmd/todo/main.go 文件的 main 函数里,添加:
hideCompleted := flag.Bool("hide-completed", false, "Prevent displaying completed items")
然后调用:
flag.Parse()
解析标志。后续在代码中根据

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



