gpt4 book ai didi

go - 如何正确描述 proto 文件?

转载 作者:行者123 更新时间:2023-12-01 21:13:43 30 4
gpt4 key购买 nike

假设我们将来要创建这样的表:

CREATE TABLE CITY (
CITY_ID INT8 UNIQUE NOT NULL,
FOUNDATION_DATE TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CITY_NAME VARCHAR NULL,
CITY_TYPE VARCHAR DEFAULT 'Unknown',
INVISIBLE BOOL NULL
);

我正在尝试创建一个 proto将匹配且不与此表结构冲突的文件。但不幸的是,我很困惑,需要一些帮助。我从官方文档中发现 proto3没有在 message 中指定必填和可选字段的选项.我也不知道如何在字段中指定默认值。

在这一点上,我已经描述了以下 city.proto文件:
syntax = "proto3";

import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";

message City {
google.protobuf.UInt64Value city_id = 1;
google.protobuf.Timestamp foundation_date = 1;
google.protobuf.StringValue city_name = 3;
google.protobuf.StringValue city_type = 4;
google.protobuf.BoolValue invisible = 5;
}

通过 protoc 生成 go 代码后编译器,我们通常会得到一个强类型 struct .在 GORM 的帮助下包,我想进行自动迁移并基于这个结构创建一个表。

在我的项目中,我使用 go modules .

我使用这样的命令来生成 go 代码:
protoc proto/city.proto -I. -I%GOPATH%/src --go_out=plugins=grpc:proto/city

不幸的是,该命令导致以下错误:
--go_out: protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC

转到版本 :
go version go1.12.9 windows/amd64

协议(protocol)--版本 :
libprotoc 3.11.4

问题 :

如何正确描述我们表的 proto 文件以及如何正确生成 go 代码?

最佳答案

看起来我们需要等待 gRPC 人员提供它。它在发行说明 (https://github.com/protocolbuffers/protobuf-go/releases/tag/v1.20.0#v1.20-grpc-support) 中不受支持。

但是我一直在用https://github.com/golang/protobuf/releases/tag/v1.4.0-rc.2还有这个新的google.goolang.org/protobuf V1.20.0一起。它生成一个 protobuf/grpc实现例如的 Go 代码ProtoReflect方法并实际使用这个新的反射 API。

关于go - 如何正确描述 proto 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61576922/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com