pb后缀一般用于 go_proto_library 规则。
grpc后缀一般用于 go_grpc_library 规则。
一般来说,使用简短的一个或两个字母的前缀:
// Good:
import (
fspb "path/to/package/foo_service_go_proto"
fsgrpc "path/to/package/foo_service_go_grpc"
)
如果一个包只使用一个 proto,或者该包与该 proto 紧密相连,那么前缀可以省略:
import ( pb “path/to/package/foo_service_go_proto” grpc “path/to/package/foo_service_go_grpc” )
如果 proto 中的符号是通用的,或者没有很好的自我描述,或者用首字母缩写来缩短包的名称是不明确的,那么一个简短的词就可以作为前缀:
// Good:
import (
mapspb "path/to/package/maps_go_proto"
)
在这种情况下,如果有关的代码还没有明确与地图相关,那么 mapspb.Address 可能比 mpb.Address 更清楚。
标准库导入(例如,"fmt")。
导入(例如,”/path/to/somelib”)。
(可选)Protobuf 导入(例如,fpb "path/to/foo_go_proto")。
(可选)无使用导入(例如,_ "path/to/package")
如果一个文件没有上述可选类别组,相关的导入将包含在项目倒入组中。
任何清晰和容易理解的导入分组通常都是好的。例如,一个团队可以选择将 gRPC 导入与 protobuf 导入分开分组。
注意: 对于只维护两个强制组的代码 (一个组用于标准库,一个组用于所有其他的导入), goimports 工具产生的输出与这个指南一致。 然而, goimports 并不了解强制性组以外的组;可选组很容易被该工具废止。当使用可选的组别时,作者和审稿人都需要注意,以确保组别符合要求。 两种方法都可以,但不要让进口部分处于不一致的、部分分组的状态。