关于go:go-反射的基础应用

2次阅读

共计 957 个字符,预计需要花费 3 分钟才能阅读完成。

在 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("利用反射来获取变量名称:")
    for i := 0; i < reflect.TypeOf(&p).Elem().NumField(); i++ {fmt.Println("变量名称:", reflect.TypeOf(&p).Elem().Field(i).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)
}

输入后果:

利用反射来获取变量的类型和对应的值:
Type: []string
Value: [apple banana orange]
------------------------------
利用反射来获取变量名称:
变量名称:  Name
变量名称:  Age
------------------------------
利用反射来批改构造体中属性的值:
Name: lewis, Age: 20

原文作者:蓝色瞳仁
版权申明:转载请注明作者和链接。

正文完
 0