商城网站建设第一章,网络架构分为几层,有什么平台做网站比较好,app开发公司投入一、编码规范推荐
1、文件名使用小写下划线的命名风格#xff0c;例如 lower_snake_case.proto 2、使用 2 个空格缩进 3、包名应该和目录结构对应 4、消息名使用首字母大写驼峰风格(CamelCase)#xff0c;例如message StudentRequest { ... } 5、字段名使用小写下划线的风格…一、编码规范推荐
1、文件名使用小写下划线的命名风格例如 lower_snake_case.proto 2、使用 2 个空格缩进 3、包名应该和目录结构对应 4、消息名使用首字母大写驼峰风格(CamelCase)例如message StudentRequest { ... } 5、字段名使用小写下划线的风格例如 string status_code 1 6、枚举类型枚举名使用首字母大写驼峰风格例如 enum FooBar 7、RPC 服务名和方法名均使用首字母大写驼峰风格例如service FooService{ rpc GetSomething() }
二、protoC 执行命令
protoc --go_out. *.proto
三、标量类型表 四、使用语法案例
// 使用proto3版本
syntax proto3;// 可选防止不同的消息类型有命名冲突
package main; // 指定go的包名会在当前目录生成一个main目录然后里面存放*.pb.go文件
option go_package main; // 导入其他的proto文件
import mypro/other.proto; // message是关键词Student是类型名后续生成一个Student的结构体
message Student { // 格式类型 字段名 数字标识符每个标识符是唯一的 string name 1; // repeated代表字段可重复对应Student结构体里的字段Scores []int32repeated int32 scores 3; // 定义一个map键是string值是int32mapstring, int32 points 1; // 指定了一些字段编号不应该被再次使用。这意味着在 Foo 消息的定义中你不能再使用字段编号 2、15 以及 9 到 11包括 9 和 11来添加新的字段reserved 2, 15, 9 to 11; // 指定了一些字段名称不应该被再次使用。这意味着在 Foo 消息的定义中你不能再使用字段名称 foo 或 bar 来添加新的字段。reserved foo, bar; // 枚举类型enum Gender { // 开启别名alias 选项允许为不同的枚举值赋予相同的标识符 option allow_alias true; // 枚举类型的第一个选项标识符必须是0也是枚举类型默认值FEMALE 0; MALE 1;// 开启别名选项后OTHER 1; }Gender gender 2;// 嵌套另一个message作为消息类型这里会生成 Results []*Student_Result 类似这样的切片repeated Result results 1; // 也支持直接嵌套写messagemessage Result { string url 1;string title 2;repeated string snippets 3;}message ErrorStatus {string message 1;// 标识details字段可以属于任何类型(可以是string int等)生成类似 []*anypb.Any 这样的切片记得要在前面import google/protobuf/any.protorepeated google.protobuf.Any details 2; }//todo 确保在消息的实例中只有 oneof 定义的字段中的一个字段被赋值。这是一种类型安全的方式来表示一个字段是多个可能类型的其中之一而不是多个字段可以同时被赋值。//在你提供的 protobuf 程序中SampleMessage 消息定义了一个名为 test_oneof 的 oneof。这意味着在任何给定的 SampleMessage 实例中只有 name 字段或 sub_message 字段可以被设置而不能同时设置两者。oneof test_oneof {string name 4;SubMessage sub_message 9;}//如果消息类型是用来远程通信的(Remote Procedure Call, RPC)可以在 .proto 文件中定义 RPC 服务接口。//例如我们定义了一个名为 SearchService 的 RPC 服务提供了 Search 接口入参是 SearchRequest 类型返回类型是 SearchResponseservice SearchService {rpc Search (SearchRequest) returns (SearchResponse);}
}message Result {string url 1;string title 2;repeated string snippets 3;
}