gpt4 book ai didi

go - 如何通过 go generate 传递参数

转载 作者:行者123 更新时间:2023-12-01 20:27:29 28 4
gpt4 key购买 nike

这是我的项目的结构

├── cmd
│   ├── orders
│   │   ├── main.go
└── scripts
└── codegenerator.go
codegenerator.go文件是我放置代码以生成代码的文件。这是 codegenerator.go 的逻辑
  • 重命名 main.goold_main.go
  • 读自old_main.go逐行写入一个名为 main.go 的新文件
  • 根据 main.go 中的标记/占位符插入新的行/代码块
  • 删除 old_main.go文件
  • go:generate指令位于 main.go像这样
    //go:generate go run ../../scripts/codegenerator.go

    我跑了 go generate从命令行并希望传入 3 个参数以便它们可以在 codegenerator.go 中使用.这是我的命令和我得到的错误(我在路径 cmd/orders 上执行了这个命令)
     $ go generate arg_one arg_two arg_three
    can't load package: package arg_one: unknown import path "arg_one": cannot find module providing package arg_one
    can't load package: package arg_two: unknown import path "arg_two": cannot find module providing package arg_two
    can't load package: package arg_three: unknown import path "arg_three": cannot find module providing package arg_three

    所以问题是
  • 我在运行吗go generate适本地?
  • 我如何从 go generate 传递参数目标脚本的命令行
  • 最佳答案

    虽然我同意您使用其他解决方案可能会更好,但没有任何东西可以阻止使用 env vars(操作系统细节可能会有所不同)

    ➜  /tmp cat foo.go

    package main

    //go:generate python run.py $ARG

    func main() {}
    ➜  /tmp cat run.py
    import sys

    print sys.argv[1]
    ➜  /tmp ARG=poop go generate foo.go
    poop

    关于go - 如何通过 go generate 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58617849/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com