Golang reflect 包详解
reflect
包提供了运行时反射的功能,可以在编写程序时使用任意类型的值。这里是一个简单的例子,展示如何使用 reflect
包来获取变量的类型信息:
package main
import (
"fmt"
"reflect"
)
func main() {
var x float64 = 3.4
fmt.Println("type:", reflect.TypeOf(x))
}
这段代码会输出 x
变量的类型,即 float64
。reflect.TypeOf
函数返回任意值的类型。
reflect
包还可以用来检查两个interface{}值是否相等,或者改变变量的值,甚至可以调用函数或方法。这里是一个简单的例子,展示如何使用 reflect
包来设置 interface{} 变量的值:
package main
import (
"fmt"
"reflect"
)
func main() {
var x float64
y := reflect.ValueOf(&x)
// 设置 x 的值为 4.2
z := reflect.ValueOf(4.2)
y.Elem().Set(z)
fmt.Println("x:", x)
}
这段代码会输出 x
的新值,即 4.2
。reflect.ValueOf
函数返回任意值的 reflect.Value
类型的值,Elem()
方法返回指向接口内部的值的 reflect.Value
,Set()
方法则用来设置这个值。
评论已关闭