为了账号安全,请及时绑定邮箱和手机立即绑定

docopt.go 奇怪的错误信息

docopt.go 奇怪的错误信息

Go
慕妹3242003 2021-09-13 14:48:53
使用 docopt.go 重构旧项目并最小化代码程序如下所示package mainimport (    "fmt"    "github.com/docopt/docopt.go")const Version = `2.0`const Usage = `Usage:    serve [--port] <dir>    serve help | --help    serve --version Options:    -p, --port       port for the sever to listen on    -h, --help       display help information    -v, --version    display Version`func check(err error) {    if err != nil {        panic(err)    }}func main() {    args, err := docopt.Parse(Usage, nil, true, Version, false)    check(err)    port := args["[--port]"].(string)    fmt.Println(args)    fmt.Println(port)v}然而,当我运行程序go run ./serve.go help期待帮助消息时,我得到了这个panic: interface conversion: interface is nil, not stringgoroutine 1 [running]:main.main()    /Users/jburns/Development/Gopath/src/github.com/nyumal/serve/serve.go:31 +0x148goroutine 2 [runnable]:runtime.forcegchelper()    /usr/local/Cellar/go/1.4.1/libexec/src/runtime/proc.go:90runtime.goexit()    /usr/local/Cellar/go/1.4.1/libexec/src/runtime/asm_amd64.s:2232 +0x1goroutine 3 [runnable]:runtime.bgsweep()    /usr/local/Cellar/go/1.4.1/libexec/src/runtime/mgc0.go:82runtime.goexit()    /usr/local/Cellar/go/1.4.1/libexec/src/runtime/asm_amd64.s:2232 +0x1goroutine 4 [runnable]:runtime.runfinq()    /usr/local/Cellar/go/1.4.1/libexec/src/runtime/malloc.go:712runtime.goexit()    /usr/local/Cellar/go/1.4.1/libexec/src/runtime/asm_amd64.s:2232 +0x1exit status 2并运行go run ./serve.go --port 5000它返回相同的东西但是运行go run ./serve.go --port 5000 .返回Usage:    serve [--port] <dir>    serve help | --help    serve --versionexit status 1我哪里做错了?
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您需要为端口声明一个参数:


const Usage = `

Usage:

    serve [--port=<arg>] <dir>

    serve help | --help

    serve --version 


Options:

    -p, --port=<arg> port for the sever to listen on

    -h, --help       display help information

    -v, --version    display Version

使用二值类型断言来处理未设置端口的情况:


port, ok := args["--port"].(string)

if ok {

   // port is set

}

另外,从地图键周围删除“[]”。


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号