gpt4 book ai didi

go - 如何用数据动态填充结构?

转载 作者:行者123 更新时间:2023-12-01 22:23:02 24 4
gpt4 key购买 nike

在我的 gRPC 服务,写在 戈朗 , 我有这样的rpc method调用CreateCity .如您所见,在此方法中,我想在数据库中创建一条新记录,并将有关此记录的所有信息作为响应返回。

func (server *Server) CreateCity(context context.Context, request *proto.CreateCityRequest) (*proto.CreateCityResponse, error) {
city := proto.City {
Name: request.GetCity().Name,
Country: request.GetCity().Country,
}

err := databases.DBGORM.Table("city").Create(&city).Error
if err != nil {
utils.Logger().Println(err.Error())
return nil, status.Errorf(codes.Internal, err.Error())
}

result := &proto.CreateCityResponse {
City: &city,
}

return result, nil
}

原型(prototype) 文件如下所示:
syntax = "proto3";

package proto;

import "google/protobuf/wrappers.proto";
import "google/protobuf/timestamp.proto";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option go_package = "./proto";

service CityService {
rpc CreateCity(CreateCityRequest) returns (CreateCityResponse) {}
}

message City {
google.protobuf.StringValue name = 1 [json_name = "name", (gogoproto.jsontag) = "name", (gogoproto.wktpointer) = true];
google.protobuf.StringValue country = 2 [json_name = "country", (gogoproto.jsontag) = "country", (gogoproto.wktpointer) = true];
}

message CreateDealerGroupRequest {
City city = 1;
}

message CreateDealerGroupResponse {
City city = 1;
}

是否可以在不明确指定名称的情况下用数据动态填充结构?如您现在所见,我明确指定了字段的名称及其值:
city := proto.City {
Name: request.GetCity().Name,
Country: request.GetCity().Country,
}

最佳答案

您可以使用 json.Marshal创建 json 字节数组,然后创建 json.Unmarshal

inrec, _ := json.Marshal(request.GetCity())
json.Unmarshal(inrec, &city)

关于go - 如何用数据动态填充结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61849226/

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