关于golang reflect中传递的interface{}是指针还是非指针
发布时间:2021-05-22 编辑:jiaochengji.com
教程集为您提供关于golang reflect中传递的interface{}是指针还是非指针等资源,欢迎您收藏本站,我们将为您提供最新的关于golang reflect中传递的interface{}是指针还是非指针资源
///
type TestA struct {
Flag bool
}
func (t *TestA) Run(a...int) int {
var out int = 0;
for _,i := range a {
out = i
}
return out
}
/// 注意: reflect.ValueOf接收的是值
func testA() {
i := TestA{}
vl := reflect.ValueOf(i)
fmt.Println("value:",vl.FieldByName("Flag").Interface())
//
vl4fun := reflect.ValueOf(&i)
args := []reflect.Value{reflect.ValueOf(int(2))}
fmt.Println("value:",vl4fun.MethodByName("Run").Call(args)[0].Interface())
}
/// 注意: reflect.ValueOf接收的是指针
func testA4P() {
i := new(TestA)
vl := reflect.ValueOf(i)
fmt.Println("value:",vl.Elem().FieldByName("Flag").Interface())
//
vl4fun := reflect.ValueOf(i)
args := []reflect.Value{reflect.ValueOf(int(2))}
fmt.Println("value:",vl4fun.MethodByName("Run").Call(args)[0].Interface())
}
///TestB
type TestB struct {
Flag bool
}
/**************************************************************************/
// 注意: 此处定义是非指针
func (t TestB) Run(a...int) int {
var out int = 0;
for _,i := range a {
out = i
}
return out
}
func testB() {
i := TestB{}
vl := reflect.ValueOf(i)
//
fmt.Println("value:",vl.FieldByName("Flag").Interface())
args := []reflect.Value{reflect.ValueOf(int(2))}
fmt.Println("value:",vl.MethodByName("Run").Call(args)[0].Interface())
}
//main
func main() {
testB()
}
到此这篇关于“关于golang reflect中传递的interface{}是指针还是非指针”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
关于golang reflect中传递的interface{}是指针还是非指针
golang传递接口类型参数时,什么时候用指针
golang 结构体断言_Golang中的reflect原理
活学活用golang的反射机制
reflect笔记
golang 面试题(十三)interface内部结构和nil详解
Golang使用reflect操作struct
golang的反射机制与实践(上)
Golang reflect机制实现struct 复制/选择复制
指针和参数传递(Go语言)
[关闭]