go 反射的基础应用

发布于:2023-05-28 ⋅ 阅读:(335) ⋅ 点赞:(0)

在golang中,反射是一种机制,它允许在程序运行时检查、探索和修改变量。
在反射中,我们可以使用 reflect 包的函数来读取变量的类型、值和方法。

package main

import (
    "fmt"
    "reflect"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    var fruit = []string{"apple", "banana", "orange"}
    var p = Person{Name: "John", Age: 30}

    fmt.Println("利用反射来获取变量的类型和对应的值:")
    fmt.Println("Type:", reflect.TypeOf(fruit))
    fmt.Println("Value:", reflect.ValueOf(fruit))
    fmt.Println("------------------------------")

    fmt.Println("利用反射来获取变量名称:")
    fmt.Println("Field0变量名称: ", reflect.TypeOf(&p).Elem().Field(0).Name)
    fmt.Println("Field1变量名称: ", reflect.TypeOf(&p).Elem().Field(1).Name)
    fmt.Println("------------------------------")

    fmt.Println("利用反射来修改结构体中属性的值:")
    v := reflect.ValueOf(&p).Elem()
    v.FieldByName("Name").SetString("lewis")
    v.FieldByName("Age").SetInt(20)
    fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)
}

网站公告

今日签到

点亮在社区的每一天
去签到