Go + Protocol buffers 表现得很奇怪

Go + Protocol buffers acting really strange

我正在为我正在进行的项目编写一个基于服务的服务器,它是用 Go 编写的,并使用 Protocol Buffers 进行服务间通信。一切正常,直到我添加名为 DeviceRequestDeviceResponse 的协议,现在编译器找不到它们,而协议的 go 源存在并在我的 GOPATH 中设置。 WebStorm 也能找到它们,但出于某种原因编译器没有找到。奇怪的是,Go 源不再存在的旧协议仍然有效(Webstorm 也无法识别它们),请参阅这些屏幕截图

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

协议缓冲区不会自动编译成 Go 代码,除非您有第三方工具可以执行此操作。作为 Protocol Buffers 一部分的 protoc 工具将用于创建 .proto 文件的 Go 实现。输出应位于您的 $GOPATH/src 中。 .a 文件将存储在 $GOPATH/pkg 下。代码完成会查看 $GOPATH/pkg 而 "go" 工具会在 $GOPATH/src 中查找任何已更改的内容。

删除 $GOPATH/pkg 的内容,然后 运行 "go install" 重新创建 .a 文件。