golang reflect反射:对基本数据类型、对struct结构体进行反射(获取值)代码示例
2023-09-14 09:01:53 时间
代码
package main
import (
"fmt"
"reflect"
)
func main() {
var num int=10
reflectTest01(num)
stu:=Student{"tom",20}
reflectTest02(stu)
}
//对基本数据类型进行反射
func reflectTest01(b interface{}){
rType := reflect.TypeOf(b)
fmt.Println("rType=",rType)
rVal := reflect.ValueOf(b)
n2 := 2 + rVal.Int()
fmt.Println("n2=",n2)
fmt.Printf("rVal=%v\n rVal type=%T\n",rVal,rVal)
iV := rVal.Interface()
num2 := iV.(int)
fmt.Println("num2=",num2)
}
// Student 对struct进行反射
type Student struct {
Name string
Age int
}
func reflectTest02(b interface{}){
rTyp := reflect.TypeOf(b)
fmt.Println("rTyp=",rTyp)
rVal := reflect.ValueOf(b)
iV := rVal.Interface()
fmt.Printf("iv=%v iv type=%T\n",iV,iV)
student,ok := iV.(Student)
if ok{
fmt.Printf("student.Name=%v\n",student.Name)
}
}
结果
rType= int
n2= 12
rVal=10
rVal type=reflect.Value
num2= 10
rTyp= main.Student
iv={tom 20} iv type=main.Student
student.Name=tom
相关文章
- golang和python的二进制转换
- Golang每日一练(leetDay0039) 二叉树专题(8)
- Golang每日一练(leetDay0008)
- Golang 016. 字符串字母统计
- Golang 028. 奶牛生子问题
- golang gin内置中间件的使用
- golang写文件代码示例
- Golang对JSON文件的读写操作
- [Go] golang 执行 Linux 系统 command
- 【数据结构与算法】FST 有穷状态转换器详解:Finite State Transducers & 算法核心思想和代码实现(Golang语言)
- Golang-interface(四 反射)
- golang三大基础mock大法
- golang的select典型用法
- 【GoLang】golang context channel 详解
- Golang中用interface{}接收任何参数与强转
- golang import加“.” 和 “_”
- Golang优秀开源项目汇总