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

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