go语言反射reflect

来源:互联网 发布:网络教育统考网站 编辑:程序博客网 时间:2024/05/16 21:36
//UnKonwnJSONUnmarshal jsonfunc UnKonwnJSONUnmarshal(data []byte, key string) (vv interface{}) {    var f interface{}    if err := json.Unmarshal(data, &f); err == nil {        m := f.(map[string]interface{})        for k, v := range m {            if key == k {                switch vv := v.(type) {                case string:                    fmt.Println(k, "is string", vv)                    return vv                case int:                    fmt.Println(k, "is int", vv)                case []interface{}:                    fmt.Println(k, "is arry", vv)                    return vv                case float64:                    fmt.Println(k, "is float64", vv)                    return vv                default:                    fmt.Println(k, "is of a type I don't know how to handle")                }            } else {                continue            }        }    }    return}
// MissionPerformance methodfunc (uptokenTask MissionTaskStr) MissionPerformance() (rejson bool) {    uptokenTask.Name = "missionPerformance"    uptoken := createToken()    s := strings.Split(uptoken, ":")    fmt.Println("policy-base64---", s[2])    policy, err := base64.StdEncoding.DecodeString(s[2])    expire := UnKonwnJSONUnmarshal(policy, "deadline")    switch value := expire.(type) {    case float64:        deadline := int64(value)        now := time.Now().Unix()        if now < deadline {            fmt.Println("==", now)            rejson = true        }        fmt.Println("!=", deadline, now)    }    fmt.Println("policy", expire)    if err != nil {        fmt.Println(uptokenTask.Name, "error---", err)    }    return}
0 0
原创粉丝点击