golang如何使用反射识别非内置类型?

72 阅读1分钟

可以像下面这样:

package main

import (
	"fmt"
	"reflect"
)

// 自定义类型
type Person struct {
	Name  string
	Age   int
}

func main() {
	// 创建一个变量并赋值
	value := Person{"John Doe", 30}

	// 获取变量的反射值
	reflectedValue := reflect.ValueOf(value)

	// 获取变量的类型
	reflectedType := reflectedValue.Type()

	// 输出变量的类型
	fmt.Printf("Type: %s\n", reflectedType)

	// 遍历结构体的字段
	if reflectedType.Kind() == reflect.Struct {
		for i := 0; i < reflectedType.NumField(); i++ {
			field := reflectedType.Field(i)
			fieldValue := reflectedValue.Field(i).Interface()
			fmt.Printf("Field %s: %v\n", field.Name, fieldValue)
		}
	}
}

转自:duoke360.com/