go语言之反射

package main

import (
	"fmt"
	"reflect"
)

type FlyBird struct {
	Name           string
	LifeExpectancy int
}

func (b *FlyBird) BirdFly(){
	fmt.Println("bird fly")
}

func main(){
	//实现一个FlyBird的指针变量
	sparrow := &FlyBird{"Sparrow",3}

	//获取变量的反射元素
	s := reflect.ValueOf(sparrow).Elem()

	//获取反射元素的类型
	typeOfT := s.Type()

	//循环反射元素
	for i:=0;i<s.NumField();i++{
		//单个反射元素
		f :=s.Field(i)
		//打印反射元素的属性名称 类型 和值
		fmt.Printf("%d:%s %s = %v
", i, typeOfT.Field(i).Name, f.Type(), f.Interface())
	}
}

  

你不能把坏习惯扔出窗外 但你可以一步步赶下电梯
原文地址:https://www.cnblogs.com/Ychao/p/14652980.html