本次实验的代码在go-online上
1.实验内容
使用cobra完成一个简单的agenda,只需选择CLI 命令行实用程序开发实战 - Agenda的第四部分agenda 开发项目中业务需求的两项完成便可,我选择实现agenda register和login。
2.实验经过
1.配置环境
本次实验要使用cobra,使用首先要安装cobra,一般使用指令go get -v github.com/spf13/cobra/cobra
,但是会出现下面的错误:
Fetching https://golang.org/x/sys/unix?go-get=1
https fetch failed: Get https://golang.org/x/sys/unix?go-get=1: dial tcp 216.239.37.1:443: i/o timeout
要解决它们,需要在$GOPATH/src/golang.org/x
目录下用 git clone 下载 sys 和 text 项目,然后使用 go install github.com/spf13/cobra/cobra
获取cobra的可执行程序,其会在$GOPATH/src
文件夹下。
如果你的$GOPATH/src
文件夹中无golang.org文件夹,则需要你手动创建golang.org和x文件夹。然后在其目录下执行下列指令:
然后就再次执行指令:go get -v github.com/spf13/cobra/cobra
,便可成功:
2.创建agenda项目
初始化项目:
C:\Users\LENOVO\go\bin\cobra init --pkg-name agenda
添加指令:
C:\Users\LENOVO\go\bin\cobra add register
C:\Users\LENOVO\go\bin\cobra add login
2.具体实现
register:
绑定参数:
存储用户信息的数据结构:
判断命令行参数是否正确:
读取储存用户信息的文件并判断用户是否存在:
将新用户写入存储文件中:
login:
绑定参数和判断命令行参数是否正确,以及使用的存储用户信息的数据结构这三个部分与register极其相似,所以就不再展示。
判断输入的登陆信息是否正确,返回错误部分的信息:
3.测试
要在go-online上执行程序,首先要修改main.go文件中cmd包的路径,否则无法执行。首先执行pwd命令查看当前文件路径,然后进行修改:
然后输入执行su命令并输入密码,进入root便可执行。
输入指令:go run main.go register -u qwe -p 121351
输入指令:go run main.go register -u qwe -p 121351 -e wefsd@sqe.com -o 123456135
输入相同用户名的指令:go run main.go register -u qwe -p 1210351 -e we0fsd@sqe.com -o 1234561035
输入指令:go run main.go login -u qwe
输入指令:go run main.go login -u qwe -p 121351
输入用户名错误的指令:```go run main.go login -u 0qwe -p 121351``
输入密码错误的指令:go run main.go login -u qwe -p 0121351