这是我的项目的结构
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmd\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 orders\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.go\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 scripts\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 codegenerator.go\n
Run Code Online (Sandbox Code Playgroud)\n\n该codegenerator.go
文件是我放置代码以生成代码的文件。这是逻辑codegenerator.go
main.go
为old_main.go
old_main.go
并写入一个名为的新文件main.go
main.go
old_main.go
文件该go:generate
指令位于main.go
这样的
//go:generate go run ../../scripts/codegenerator.go\n
Run Code Online (Sandbox Code Playgroud)\n\n我go generate
从命令行运行并想传递 3 个参数,以便它们可以在codegenerator.go
. 这是我的命令和我得到的错误(我在路径上执行了这个命令cmd/orders
)
$ go generate arg_one arg_two arg_three\ncan\'t load package: package arg_one: unknown import path "arg_one": cannot find module providing package arg_one\ncan\'t load package: package arg_two: unknown import path "arg_two": cannot find module providing package arg_two\ncan\'t load package: package arg_three: unknown import path "arg_three": cannot find module providing package arg_three\n
Run Code Online (Sandbox Code Playgroud)\n\n所以问题是
\n\ngo generate
正常吗?go generate
到目标脚本虽然我同意您最好使用其他解决方案,但没有任何东西可以阻止使用环境变量(操作系统细节可能会有所不同)
\n\n\xe2\x9e\x9c /tmp cat foo.go\n\npackage main\n\n//go:generate python run.py $ARG\n\nfunc main() {}\n
Run Code Online (Sandbox Code Playgroud)\n\n\xe2\x9e\x9c /tmp cat run.py\nimport sys\n\nprint sys.argv[1]\n
Run Code Online (Sandbox Code Playgroud)\n\n\xe2\x9e\x9c /tmp ARG=poop go generate foo.go\npoop\n
Run Code Online (Sandbox Code Playgroud)\n