marsevilspirit's blog

GO 的reflect库学习笔记

GO 的 reflect 库

reflect 标准库最核心的就是 reflect.Type(TypeOf)reflect.Value(ValueOf) 类型。

  • TypeOf 方法:用于提取入参值的类型信息

  • ValueOf 方法:用于提取存储的变量的值信息

reflect.TypeOf 和 reflect.ValueOf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import (
"reflect"
"fmt"
)

type NB struct {
Name string
}

func main() {
nb := NB{Name: "mars"}
typeof := reflect.TypeOf(nb)
valueof := reflect.ValueOf(nb)
fmt.Println("TypeOf:", typeof)
fmt.Println("ValueOf:", valueof)
}

输出结果:

1
2
TypeOf: main.NB
ValueOf: {mars}

从输出结果中可得出 reflect.TypeOf 成功解析出 NB 变量的类型是 main.NB, reflect.ValueOf成功解析出 nb变量的值是 mars

这就是reflect的最基本的用法。

Sep 2024