8 type safeField struct {
12 func (field *safeField) Offset() uintptr {
13 return field.StructField.Offset
16 func (field *safeField) Name() string {
17 return field.StructField.Name
20 func (field *safeField) PkgPath() string {
21 return field.StructField.PkgPath
24 func (field *safeField) Type() Type {
25 panic("not implemented")
28 func (field *safeField) Tag() reflect.StructTag {
29 return field.StructField.Tag
32 func (field *safeField) Index() []int {
33 return field.StructField.Index
36 func (field *safeField) Anonymous() bool {
37 return field.StructField.Anonymous
40 func (field *safeField) Set(obj interface{}, value interface{}) {
41 val := reflect.ValueOf(obj).Elem()
42 val.FieldByIndex(field.Index()).Set(reflect.ValueOf(value).Elem())
45 func (field *safeField) UnsafeSet(obj unsafe.Pointer, value unsafe.Pointer) {
46 panic("unsafe operation is not supported")
49 func (field *safeField) Get(obj interface{}) interface{} {
50 val := reflect.ValueOf(obj).Elem().FieldByIndex(field.Index())
51 ptr := reflect.New(val.Type())
53 return ptr.Interface()
56 func (field *safeField) UnsafeGet(obj unsafe.Pointer) unsafe.Pointer {
57 panic("does not support unsafe operation")