目录
- 一、环境相关版本
- 二、go_package配置为当前目录下
- 三、go_package配置为指定目录
- 四、结论
 
 
一、环境相关版本
go             v1.20.5
protoc         v4.24.0
protoc-gen-go  v1.26.0
protoc-gen-go版本过高时需要指定包名,即go_package
  
二、go_package配置为当前目录下
option go_package="/";
 /表示生成的pb.go文件在当前目录下。
  
 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FjLTyhfg-1689686168725)(grpc.assets/image-20230718210149500.png)]](https://img-blog.csdnimg.cn/6e159b3700ca4e468bee1e86b9358de8.png)
  此时是在demo下执行,所以pb.go文件生成在demo下。
  
  
 
此时是在demo/api下执行,所以pb.go文件生成在demo/api下。
三、go_package配置为指定目录
option go_package="/main";
指定生成的pb.go文件生成在当前路径下的main文件夹中
 
 
此时是在demo下执行,所以pb.go文件生成在demo/main下。

  此时是在demo/api下执行,所以pb.go文件生成在demo/api/main下。
  
  
 
但是通过go_out的参数 可以指定pb.go生成的层级,如指定了./api,那么此时虽然是在demo层级下执行,但执行的结果在demo/api层级中。
四、结论
所以如果要生成到指定目录下,实际生成的位置是当前位置/go_out位置/go_package位置,如果每次执行的当前位置不一样,记得调整go_out的位置。
 
  
 如有不对,烦请指出,感谢!