普通网友 2018-12-02 04:05
浏览 48
已采纳

由于某些原因无法读取StructTag

I have this handler:

func (h Handler) makeGetMany(v PeopleInjection) http.HandlerFunc {

    type RespBody struct {
        TypeCreatorMeta string `type:"bar",tc_resp_body_type:"true"`
    }

    type ReqBody struct {
        TypeCreatorMeta string `type:"star",tc_req_body_type:"true"`
        Handle string
    }

    return tc.ExtractType(
        tc.TypeList{ReqBody{},RespBody{}},
        func(w http.ResponseWriter, r *http.Request) {
        json.NewEncoder(w).Encode(v.People)
    })
}

the tc.ExtractType func looks like:

type TypeList = []interface{}

func ExtractType(s TypeList, h http.HandlerFunc) http.HandlerFunc {

    m := make(map[string]string)

    for _, v := range s {
        t := reflect.TypeOf(v)
        f, _ := t.FieldByName("TypeCreatorMeta")
        fmt.Println("All tags?:",f.Tag);
        v, ok := f.Tag.Lookup("type")
        if !ok {
            fmt.Println("no 'type' tag.");
            continue;
        }
        for _, key := range []string{"tc_req_body_type", "tc_resp_body_type"} {
            _, ok := f.Tag.Lookup(key)
            fmt.Println(ok,"key:",key)   // <<<< important
            if ok {
                m[key] = v
            }
        }
    }

    return func(w http.ResponseWriter, r *http.Request) {

        fmt.Printf("Req: %s
", r.URL.Path)
        h.ServeHTTP(w, r)
    }
}

it's able to find the "type" tag, which points to "star", but for some reason it's not picking up the "tc_resp_body_type" tag which points to "true". Here is what I get logged out:

All tags?: type:"star",tc_req_body_type:"true"
false key: tc_req_body_type
false key: tc_resp_body_type

does anyone know why the "type" tag can be found, but the "tc_req_body_type" cannot be found?

  • 写回答

2条回答 默认 最新

  • douyan5481 2018-12-02 04:30
    关注

    ughh I think it needs to be:

        TypeCreatorMeta string `type:"bar" tc_resp_body_type:"true"` // no comma
    

    using a comma like this is not correct?

        TypeCreatorMeta string `type:"bar",tc_resp_body_type:"true"`
    

    can someone confirm?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)