1. 程式人生 > >go 反射應用

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,總是無法正常遍歷,把元素改短以後就成功了,可能是反射的要求吧。具體的原因沒有太深入的研究,有興趣的朋友,可以仔細研究一下。不介意可以告訴我一下,感謝。