goframe根据数据表生成对应的proto数据结构文件,编译proto文件,生成对应的protobuf go文件以及对应的控制器文件

1、修改hack/config.yaml配置文件

gfcli:
  docker:
    build: "-a amd64 -s linux -p temp -ew"
    tagPrefixes:
      - my.image.pub/my-app
  gen:
    pbentity: 
      link: "mysql:root:root@tcp(127.0.0.1:3306)/test"
      removePrefix: "suihuo_"
      tables: "suihuo_user"
    pb:
      ctrl: "internal/controller"
    dao:
      link: "mysql:root:root@tcp(127.0.0.1:3306)/test"
      removePrefix: "suihuo_"
      tables: "suihuo_user"

2、生成对应的protobuf go文件以及对应的控制器文件【项目路径不要有中文】

# 运行命令生成 user.proto
gf gen pbentity

# 该命令用于编译proto文件,生成对应的protobuf go文件以及对应的控制器文件
# 运行之前需要在 user.proto里面加上grpc服务方法

gf gen pb

3、添加grpc服务方法

// ==========================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================

syntax = "proto3";

package user;

option go_package = "demo/api/user";

import "google/protobuf/timestamp.proto";

message User {
  int64                     Id = 1; //
  string                    Username = 2; // 用户名
  string                    Password = 3; // 密码
  string                    Salt = 4; // 盐
  google.protobuf.Timestamp CreatedAt = 5; // 创建时间
  google.protobuf.Timestamp UpdatedAt = 6; // 创建时间
  google.protobuf.Timestamp DeletedAt = 7; // 创建时间
}

message GetOneReq{
  int64 Id = 1; // v: required
}
message GetOneRes{
  User User = 1; // v: required
}

//grpc服务方法
service UserService {
  rpc getOne(GetOneReq) returns (GetOneRes){}
}
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装protobuf 1. 下载protobuf编译器:https://github.com/protocolbuffers/protobuf/releases 2. 安装protobuf编译器: ``` $ tar -xzvf protobuf-3.15.6.tar.gz $ cd protobuf-3.15.6/ $ ./configure $ make $ sudo make install $ sudo ldconfig ``` 3. 安装protobuf的Go语言支持: ``` $ go get github.com/golang/protobuf/protoc-gen-go ``` 该命令会从GitHub上下载并编译protoc-gen-go可执行文件,该文件是一个protobuf插件,用于将proto文件生成Go语言代码。 使用protobuf 1. 编写proto文件 ```protobuf syntax = "proto3"; package example; message Person { string name = 1; int32 age = 2; repeated string hobbies = 3; } ``` 2. 使用protoc命令生成Go语言代码 ``` $ protoc --go_out=. example.proto ``` 该命令会在当前目录下生成example.pb.go文件,其中包含了protobuf定义的Person类型的Go语言结构体。 3. 在Go语言程序中使用protobuf ```go package main import ( "fmt" "example" "github.com/golang/protobuf/proto" ) func main() { p := &example.Person{ Name: "Alice", Age: 20, Hobbies: []string{"swimming", "reading"}, } data, err := proto.Marshal(p) if err != nil { fmt.Println("marshal error:", err) return } p2 := &example.Person{} err = proto.Unmarshal(data, p2) if err != nil { fmt.Println("unmarshal error:", err) return } fmt.Println("p2:", p2) } ``` 该程序使用protobuf将一个Person对象编码为二进制数据,然后解码成另一个Person对象。注意,该程序需要引入github.com/golang/protobuf/proto包,该包提供了protobuf的Go语言支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值