github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgType/ArrayType.go (about) 1 package kmgType 2 3 import ( 4 "fmt" 5 "reflect" 6 ) 7 8 //path -> array index(number) 9 type ArrayType struct { 10 reflectTypeGetterImp 11 getElemByStringEditorabler 12 elemType KmgType 13 } 14 15 func (t *ArrayType) init() (err error) { 16 if t.elemType != nil { 17 return 18 } 19 t.elemType, err = TypeOf(t.GetReflectType().Elem()) 20 return 21 } 22 func (t *ArrayType) GetElemByString(v reflect.Value, k string) (ev reflect.Value, et KmgType, err error) { 23 if err = t.init(); err != nil { 24 return 25 } 26 et = t.elemType 27 ev, err = arrayGetSubValueByString(v, k) 28 if err != nil { 29 return 30 } 31 return 32 } 33 34 func (t *ArrayType) DeleteByPath(v *reflect.Value, path Path) (err error) { 35 if len(path) > 1 { 36 return passThougthDeleteByPath(t, v, path) 37 } 38 return fmt.Errorf("can not delete from array, path:%s", path) 39 }