dq_609586475
2018-07-28 05:32
浏览 113

如何在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?

图片转代码服务由CSDN问答提供 功能建议

与此相关: https://play.golang.org/p/0kYRHO5f7kE

如果我有20多个不同的字段,如果其中一个字段 在Struct中为空,请不要对其进行更新。 仅更新其中包含值的值。

前进的最佳方法是什么? 我已经看到将可变参数输入传递给另一个函数,但是如何最好地做到这一点呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doutu9810 2018-07-28 08: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

    打赏 评论

相关推荐 更多相似问题