Go + Protocol buffers 表现得很奇怪
Go + Protocol buffers acting really strange
我正在为我正在进行的项目编写一个基于服务的服务器,它是用 Go 编写的,并使用 Protocol Buffers 进行服务间通信。一切正常,直到我添加名为 DeviceRequest
和 DeviceResponse
的协议,现在编译器找不到它们,而协议的 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 文件。
我正在为我正在进行的项目编写一个基于服务的服务器,它是用 Go 编写的,并使用 Protocol Buffers 进行服务间通信。一切正常,直到我添加名为 DeviceRequest
和 DeviceResponse
的协议,现在编译器找不到它们,而协议的 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 文件。