github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgType/StructType.go (about) 1 package kmgType 2 3 import ( 4 "fmt" 5 "reflect" 6 ) 7 8 //path -> field name 9 //TODO embed field 10 type StructType struct { 11 reflectTypeGetterImp 12 getElemByStringEditorabler 13 } 14 15 func (t *StructType) GetElemByString(v reflect.Value, k string) (ev reflect.Value, et KmgType, err error) { 16 ev = v.FieldByName(k) 17 if !ev.IsValid() { 18 err = fmt.Errorf("field %s not find in struct", k) 19 return 20 } 21 et, err = TypeOf(ev.Type()) 22 return 23 } 24 25 func (t *StructType) DeleteByPath(v *reflect.Value, path Path) (err error) { 26 if len(path) > 1 { 27 return passThougthDeleteByPath(t, v, path) 28 } 29 return fmt.Errorf("[StructType.DeleteByPath] can not delete f struct") 30 }