go 的反射
package main
import (
"reflect"
"fmt"
)
/**
todo 关键点 elem()
*/
func main(){
//通过反射修改值
num:= 133
reflectModify(&num) //地址 & ptr =》 指针
fmt.Println(num)
//类似的理解
num3:=123
var num4 *int = &num3
fmt.Println(*num4)
}
func reflectModify(b interface{}){
rVal:=reflect.ValueOf(b)
fmt.Println(rVal.Kind())
fmt.Println(rVal.Type())
//rVal是个ptr指针 要转成值类型 理解成 取值 类似于 *取值
rVal.Elem().SetInt(155)
//rVal.SetInt(155) todo wrong
}
Tags : 本文未设置标签
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!
Previous post
HTTPS 工作原理
Next post
go chan归并的核心代码