教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 GO语言反射机制

GO语言反射机制

发布时间:2023-03-07   编辑:jiaochengji.com
教程集为您提供GO语言反射机制等资源,欢迎您收藏本站,我们将为您提供最新的GO语言反射机制资源

反射机制基本和Java等类似,可获取struct或变量的类型 值等信息。获取或修改对象的值时,一定要判断该属性是否为可操作状态,否则会导致错误。

示例代码如下:

package main

import (
	"fmt"
	"reflect"
)

///首字母大写表示该字段可导出,并可修改值
type User struct {
	ID   int
	name string //未导出
	Age  int
}

func (u User) Info() {
	fmt.Println(u)
}

func GetInfo(o interface{}) {
	t := reflect.TypeOf(o)
	fmt.Println(t.Name())

	v := reflect.ValueOf(o)
	for i := 0; i < t.NumField(); i   {
		f := t.Field(i)
		fmt.Printf("%s\n", f.Name)
		if v.Field(i).CanInterface() { //此处name未导出,所以获取Interface的时候会提示错误
			val := v.Field(i).Interface()
			fmt.Printf("%s:%v=%v\n", f.Name, f.Type, val)
		}

	}

}

func main() {
	user1 := User{222, "Charles", 100}
	GetInfo(user1)
}


到此这篇关于“GO语言反射机制”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go语言学习之reflect包(The way to go)
想系统学习GO语言(Golang
初识 Go 语言
golang的反射机制与实践(上)
图解 Go 反射实现原理
Go 反射机制介绍
Go语言--反射(reflect)
Go语言的主要特性和发展影响
go 语言学习历程
golang 反射_Go进阶:反射3定律

[关闭]
~ ~