猿问

Go + Protocol buffers 的行为真的很奇怪

我正在为我正在处理的项目编写基于服务的服务器,该服务器是用 Go 编写的,并使用协议缓冲区进行服务间通信。一切正常,直到我添加了名为DeviceRequestand 的协议DeviceResponse,现在编译器找不到它们,而协议的 go 源存在并设置在我的GOPATH. WebStorm 也能找到它们,但由于某种原因编译器没有找到。奇怪的是,Go 源不再存在的旧协议可以工作(Webstorm 也无法识别它们)

http://img1.mukewang.com/6164164a0001fc3615150538.jpg

http://img.mukewang.com/616416520001acd015150530.jpg

我试过删除我的文件中的文件GOPATH,但这没有用。我的猜测是go使用某种缓存,但我在网上找不到任何关于它的信息。


白猪掌柜的
浏览 184回答 1
1回答

江户川乱折腾

协议缓冲区不会自动编译为 Go 代码,除非您有第三方工具来执行此操作。作为 Protocol Buffers 一部分的 protoc 工具将用于创建 .proto 文件的 Go 实现。输出应位于您的 $GOPATH/src 中。.a 文件将存储在 $GOPATH/pkg 下。代码完成会查看 $GOPATH/pkg 而“go”工具会在 $GOPATH/src 中查找任何已更改的内容。删除 $GOPATH/pkg 的内容,然后运行“go install”以重新创建 .a 文件。
随时随地看视频慕课网APP

相关分类

Go
我要回答