go反射基本操作

博客主要介绍了Go反射的相关内容。包括基本用法,如获取变量类型信息、具体值、具体类型以及修改传入值,同时强调修改传入值时需使用*type类型变量,否则会panic。此外,还提及了对结构的反射操作。

go反射

一、基本用法

1.1、获取变量类型信息

	var x float64 = 1.1
	fmt.Println("type:", reflect.TypeOf(x))
	// type: float64

1.2、获取变量具体值

	var x float64 = 1.1
	fmt.Println("type:", reflect.ValueOf(x))
	// type: 1.1

1.3、获取具体类型

	var x float64 = 1.1
	v := reflect.ValueOf(x)
	fmt.Println("kind is float64:", v.Kind() == reflect.Float64)
	// kind is float64: true

1.4、修改传入值

注意:只能使用*type类型的变量否则会panic

	var x int = 3
	v := reflect.ValueOf(&x)
	e := v.Elem()
	fmt.Println("e.CanSet:", e.CanSet())
	e.SetInt(1)
	fmt.Println("x", x)
	// e.CanSet: true
	// x: 1 

二、对结构的反射操作

package main

import (
	"fmt"
	"reflect"
)

type T struct {
	A int
	B string
}

func main() {

	t := T {1, "BBB"}
	e := reflect.ValueOf(&t).Elem()

	typeofT := e.Type()

	for i := 0; i< e.NumField(); i++ {
		f := e.Field(i)
		fmt.Printf("%d: %s %s = %v\n",
			i,
			typeofT.Field(i).Name,
			f.Type(),
			f.Interface())
	}
}

// 0: A int = 1
// 1: B string = BBB
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值