持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
🎐 放在前面说的话
大家好,我是沥沥樱 👧🏻
本科在读,此为日常捣鼓.
如有不对,请多指教,也欢迎大家来跟我讨论鸭 👏👏👏
还有还有还有很重要的,麻烦大可爱们动动小手,给北点颗心心♥,北北需要鼓励嗷呜~
在实践go-swagger最后运行的时候,我遇到了一个# command-line-arguments undefined: *
酱紫的报错,我表示很疑惑,Go程序不是酱紫运行的么?就在网络上搜了一下下...
Let’s get it!
问题描述(Windows下)
编写了一段 Go 程序,执行的时候却报出如下错误
# command-line-arguments
.\main.go:35:18: undefined: Books
.\main.go:36:22: undefined: Show
.\main.go:37:19: undefined: Store
.\main.go:38:25: undefined: Delete
.\main.go:39:24: undefined: Update
问题背景
程序目录结构如下
./go-swagger
├── api.go
├── main.go
└── model.go
排查问题
执行 go build main.go
仍然出现上述的报错,真的很纳闷...根据报错信息来看,我的 Books
、 Show
、Store
等都找不到了,Books
等函数放在 api.go 文件下,和 main.go
一样都属于 package main
, 但是却说找不到。我的代码指定没有问题,那么就是我运行的方式不对,应该大概是我对 go run
命令的执行理解的并不够深刻了
分析问题
main 包中的不同的文件的代码不能相互调用,其他包可以。 所以其实api.go
、model.go
和main.go
没有被一起编译执行。
go run
命令不会自动关联其它文件自动执行
解决问题
用vscode的
原命令 go run main.go
变成 go run main.go api.go model.go
这样就会使 main.go
、 api.go
和model.go
都能被 run 命令编译并执行,就不会报错了。
用goland的
键盘按住Ctrl,鼠标同时选中main包下所有的文件,右键点击运行即可。也可以用上述的执行命令
🎉 放在后面说的话
希望运行报错# command-line-arguments undefined: *这个问题的总结能给有需要的盆友带来帮助。