dq_609586475 2018-07-27 21:32
浏览 138
已采纳

如何在Golang中将结构的多个非空值传递给hmset?

With reference to this: https://play.golang.org/p/0kYRHO5f7kE

If I have 20+ different fields, if one of the fields in the Struct is empty, don't update it. Only update the ones with values in them.

What's the best way forward? I've seen passing as variadic input to another function but how best can I do this elegantly?

  • 写回答

1条回答 默认 最新

  • doutu9810 2018-07-28 00:47
    关注

    you can use this library to convert your struct fields into map of interfaces (can be done by yourself using reflect from stdlib) then loop over it

    pipe := redisClient.TxPipeline()
    
    m := structs.Map(server)
    for k, v := range m {
        pipe.HMSet(username, k, v)
    }
    
    cmder, err := pipe.Exec()
    if err != nil {
        return nil, err
    }
    

    the driver for redis used is go-redis

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部