go 反射应用

直接上代码

package main

import (
	"fmt"
	"reflect"
)


type EnvKey struct {
	RD 	string
	BR 	string
	PT 	string
	AD 	string
	LE 	string
}

func main() {
	// 初始化机构体
	t := EnvKey{"/dev/ttyUSB0", "19200", "8080", "1105", "20"}
	// 反射
	s := reflect.ValueOf(&t).Elem()
	typeOfT := s.Type()
	// 循环遍历结构体,获取各个元素的类型,值
	for i := 0; i < s.NumField(); i++ {
		f := s.Field(i)
		fmt.Printf("%d: %s %s = %v\n", i, typeOfT.Field(i).Name, f.Type(), f.Interface())
	}
}

定义一个结构体,给机构体赋初值,通过for循环遍历结构体,拿到结构体各个元素的值。

注意:我在定义结构体中各个元素的名称时,比如结构体第一个元素RD,开始写成RtuDevice,总是无法正常遍历,把元素改短以后就成功了,可能是反射的要求吧。具体的原因没有太深入的研究,有兴趣的朋友,可以仔细研究一下。不介意可以告诉我一下,感谢。

你可能感兴趣的:(技术,golang)