首页 > 解决方案 > 如何在golang中动态命名结构项?

问题描述

我正在使用 redigo,而 ScanStruct 非常有用。但是很明显我正在尝试输入 urlhost 和 urlreq 并且这些值是根据用户的实际 uri 动态生成的。

显然,下面的代码不起作用,那么我如何通过动态命名我的结构来实现我想要的,以便我可以正确地 ScanStruct?

   func GetInfo(urlhost string, urlreq string) {


    type qwInfo struct {
         "s"+urlreq int
         "c"+urlreq []byte
         "t"+urlreq int
    }

    var QwInfo qwInfo

    c := pool.Get()
    defer c.Close()

    values, _ := redis.Values(c.Do("HMGET", urlhost, "s"+urlreq, "c"+urlreq, "t"+urlreq))

    redis.ScanStruct(values, &QwInfo);

提前致谢。

标签: goredisredigo

解决方案


这不是方式,去表现你应该使用反射

v := reflect.ValueOf(qwInfo).Elem().FieldByName(field) 

推荐阅读