Go | 运行报错# command-line-arguments undefined: *解决方案

762 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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 仍然出现上述的报错,真的很纳闷...根据报错信息来看,我的 BooksShowStore等都找不到了,Books 等函数放在 api.go 文件下,和 main.go 一样都属于 package main, 但是却说找不到。我的代码指定没有问题,那么就是我运行的方式不对,应该大概是我对 go run 命令的执行理解的并不够深刻了

分析问题

main 包中的不同的文件的代码不能相互调用,其他包可以。 所以其实api.gomodel.gomain.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: *这个问题的总结能给有需要的盆友带来帮助。