登录
首页 >  Golang >  Go问答

使用gRPC在Golang中返回列表的方法

来源:stackoverflow

时间:2024-02-09 09:30:21 382浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《使用gRPC在Golang中返回列表的方法》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我有两个结构。一个是自己的,另一个是通过 grpc 生成的。问题是,当您尝试通过 grpc 返回自己的值时,会生成错误:“cannot use list (variable of type []db.user) as *pb.userslist value in return statements” 如何将 [db.user 转换为 *pb.userlist? []用户

type user struct{
    username string `json:"username"`
    password string `json:"password"`
}

grpc 用户列表:

type UsersList struct {
    state protoiml.MessageState
    sizeCache protoiml.SizeCache
    unknownFields protoiml.UnknownFields
    User []*User `protobuf:"bytes,1,rep,name=user,proto3" json:"user,omitempty
}

正确答案


[]db.user*pb.userslist 是不同的类型,您不能只返回一个作为另一个(对于开始一个是切片,另一个是指向结构的指针)。您需要使用这样的内容进行转换(playground):

func convert(in []User) *PbUsersList {
    pbU := make([]*PbUser, len(in))
    for i := range in {
        pbU[i] = &PbUser{User: in[i].Username, Pass: in[i].Password}
    }
    return &PbUsersList{User: pbU}
}

注意:为了演示这一点,我已将 main 中的两个结构放入实际代码中 []user 将是 []db.user*pbuserslist 将是 *userslist p>

今天关于《使用gRPC在Golang中返回列表的方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>