go语言反射C结构体,go语言结构体反射的使用

reflect.Value区分CanSet和Can not Set的, 所以, 必须要返回成Can set的reflect.Value

如:

s := reflect.ValueOf(&t).Elem()

然后就可以happy的设值了, 可是不能随便设值的, 一个通用的方法就是使用Set(v Value)方法, 所以之前必须将值转成reflect.Value类型, 下面的这段代码就是转成Value类型

sliceValue := reflect.ValueOf([]int{1, 2, 3}) // 这里将slice转成reflect.Value类型

完整参考:

type T struct {

Age int

Name string

Children []int

}

t := T{12, "someone-life", nil}

s := reflect.ValueOf(&t).Elem()

s.Field(0).SetInt(123) // 内置常用类型的设值方法

sliceValue := reflect.ValueOf([]int{1, 2, 3}) // 这里将slice转成reflect.Value类型

s.FieldByName("Children").Set(sliceValue)

有疑问加站长微信联系(非本文作者)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值