栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

golang

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang

go protoc官方文档:https://developers.google.com/protocol-buffers/docs/gotutorial

当前目录生成/proto/helloworld.proto文件
syntax = "proto3";

package helloworld;

option go_package = "/proto";

service Greeter {
  rpc SauHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}
命令
protoc -I=./proto --go_out=. ./proto/*

结果:
在/proto目录里生成了helloworld.pb.go文件
这里option go_package 定义了导入的路径/proto,而–go_out也定义了路径,所有最后令–go_out=.

命令介绍
protoc -I=$SRC_DIR --go_out=$DST_DIR $SRC_DIR/addressbook.proto

参数
-I:源文件的目录(可省略)
--go_out: 设置所生成的Go代码输出目录
最后一个参数表示源文件

grpc引起错误
proto文件中如果没有添加option go_package = "/proto";这行会报下面这种错误。

protoc-gen-go: unable to determine Go import path for "proto/helloworld.proto"

Please specify either:
        • a "go_package" option in the .proto source file, or
        • a "M" argument on the command line.

See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

--go_out: protoc-gen-go: Plugin failed with status code 1.

原因是protoc-gen-go的不同版本兼容性问题。

解决办法:
一是,在proto文件中加上option go_package = "/proto";
二是采用老版本的proto-gen-go,使用命令切换为v1.3.2版本 go get -u github.com/golang/protobuf/protoc-gen-go@v1.3.2

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号