package bencode import ( "reflect" "strings" ) func findKey(key string, v reflect.Value) reflect.Value { if v.CanSet() { t := v.Type() for i := 0; i < t.NumField(); i++ { f := t.Field(i) tag := f.Tag.Get("bencode") name, _ := parseTag(tag) if key == name || key == f.Name || key == strings.ToLower(f.Name) { return v.Field(i) } } } return reflect.Value{} } func parseTag(tag string) (string, string) { if i := strings.Index(tag, ","); i != -1 { return tag[:i], tag[i+1:] } return tag, "" }