请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

给 用 go=1.18 版本一些注意事项

  1. 根据 proto 生成 go文件 使用如下命令
    命令:
    protoc --go_out=. --go-grpc_out=. helloworld.proto
    原因:
    不知道从什么版本开始 生成的go文件也拆分为2个文件
    所以 需要指定2个生成的路径

  2. 创建 server go文件 根据教程 创建客户端连接 grpc.WithInsecure() 方法弃用的问题
    办法:
    将 grpc.WithInsecure() 替换为 grpc.WithTransportCredentials(insecure.NewCredentials())
    原因:
    说是 grpc.WithInsecure() 不安全 使用 grpc.WithTransportCredentials(insecure.NewCredentials()) 用于配置连接的安全

  3. proto.RegisterGreeterServer(g, &Server{}) 缺少某些方法
    办法:
    在 你声明的 Server结构体中 添加 proto.UnsafeGreeterServer
    如一下内容
    type Server struct {
    proto.UnsafeGreeterServer
    }
    原因:
    源代码中 新添加了一个方法mustEmbedUnimplementedGreeterServer
    导致 方法缺失 所以需要 UnsafeGreeterServer 接口 这个接口申明了我们所需要 重构的方法(添加了这一方法 你甚至可以不需要写SayHello 也能够跑起来)

  4. 使用 protoc-gen_validate 生成go文件
    命令:
    protoc -I . -I C:\Users\86183\AppData\Local\JetBrains\GoLand2022.1\protoeditor --go_out=. --go-grpc_out=. --validate_out=“lang=go:.” helloworld.proto
    原因:
    这里 因为未知的问题 导致我2台电脑 上 google 相关的文件 下载到 GoLand文件里
    proto文件又需要 google相关文件 导致查找不到
    所以额外 添加了一个 绝对路径 如果没有这个问题 可以删除掉
    (protoc-gen_validate文档中 生成命令也是坑人 还是用旧版的命令)

  5. proto文件 import 同一个目录下 proto 显示错误 但是运行正常 (GoLand解析器 )下的问题
    办法:
    打开 goLand的 设置 语言和框架中 Protocol Buffers上
    取消勾选 Configure automatically
    添加 你想要import的文件所在的文件夹
    原因:
    GoLand识别不到 你想要improt的是那个文件 不知道查找的路径在哪里 没办法区分相对路径和绝对路径 这一点 和python没办法比

正在回答 回答被采纳积分+3

1回答

bobby 2022-05-27 17:53:50

非常棒,我给你把这个问题置顶一下

2 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信