Golang秒懂----go generate命令

功能

当运行go generate命令时,它将扫描与当前包相关的源代码文件,找出所有包含//go:generate的特殊注释,提取并执行该特殊注释后面的命令。

使用场景

需要支持在程序运行时,通过命令制式执行操作的时候

注意事项
  • 该特殊注释必须在.go源码文件中
  • 每个源码文件可以包含多个generate特殊注释
  • 运行go generate命令时,才会执行特殊注释后面的命令
  • go generate命令执行出错时,将终止程序的运行
  • 特殊注释必须以//go:generate开头,双斜线后面没有空格
使用
go generate [-run regexp] [-n] [-v] [-x] [command] [build flags] [file.go... | packages]
  • 参数
    -run 正则表达式匹配命令行,仅执行匹配的命令;
    -v 输出被处理的包名和源文件名;
    -n 显示不执行命令;
    -x 显示并执行命令;
    command 可以是在环境变量 PATH 中的任何命令。

  • go generate使用时支持的环境变量

    环境变量含义
    $GOARCH体系架构(arm、amd64 等)
    $GOOS当前的 OS 环境(linux、windows 等)
    $GOFILE当前处理中的文件名
    $GOLINE当前命令在文件中的行号
    $GOPACKAGE当前处理文件的包名
使用案例
  1. 写测试文件test.go,并增加//go:generate命令注释行
    package test
    
    //go:generate mockgen --source=$GOFILE --package=$GOPACKAGE --destination=mock_test.go dependency
    
    type MyInter interface {
    	GetName(id int) string
    }
    
    func GetUser(m MyInter, id int) string {
    	user := m.GetName(id)
    	return user
    }
    
  2. 终端执行命令go generate
  3. 自动生成mock_test.go文件
  4. 后续执行mock测试,详细见连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值