我正在为我正在研究的项目编写一个基于服务的服务器,该服务器用Go编写并使用协议缓冲区进行服务间通信。一切都工作正常,直到我添加名为DeviceRequest
和DeviceResponse
的协议,现在编译器无法找到它们,而协议的go源存在并在我的{{1}中设置}。 WebStorm也找到了它们,但由于某些原因编译器没有。奇怪的是,Go源不再存在的旧协议可以工作(Webstorm也无法识别它们),请参阅这些屏幕截图
我已尝试删除GOPATH
中的文件,但这不起作用。我的猜测是GOPATH
正在使用某种缓存,但我无法在网上找到任何相关信息。
答案 0 :(得分:1)
协议缓冲区不会自动编译到Go代码中,除非您有第三方工具执行此操作。作为Protocol Buffers的一部分的protoc工具将用于创建.proto文件的Go实现。输出应该驻留在$ GOPATH / src中。 .a文件将存储在$ GOPATH / pkg下。代码完成会查看$ GOPATH / pkg,而“go”工具会在$ GOPATH / src中查找已更改的内容。
删除$ GOPATH / pkg的内容,然后运行“go install”重新创建.a文件。