栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Golang通过反射对结构体进行赋值和其他操作

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang通过反射对结构体进行赋值和其他操作

Golang通过反射对结构体进行赋值和其他操作

通过反射可以方便快捷地访问Golang的结构体字段,并进行赋值或其他操作。

当两个结构体内容相同但名字不同时,如何快捷地进行赋值?

【或者内容有交集,对交集部分进行赋值】

package main

import (
	"fmt"
	"reflect"
)

type My_struct struct {
	Name  string
	Age   int
	House string
}

type Another_struct struct {
	House  string
	Age    int
	HaveDog bool
	Name   string
}

func main() {

	a := &My_struct{}
	b := &Another_struct{ "beijing", 20,true,"james"}

	c := reflect.TypeOf(*a)  //获取type
	d := reflect.TypeOf(*b)

	g := reflect.ValueOf(a).Elem() //获取value
	h := reflect.ValueOf(b).Elem()
	//双循环,对相同名字对字段进行赋值
	for i := 0; i < c.NumField(); i++ {
		for j:=0;j
			if c.Field(i).Name == d.Field(j).Name {
				g.Field(i).Set(h.Field(j))
			}
		}
	}
	fmt.Println(*a,*b)
	//{james 20 beijing} {beijing 20 true james}
}

通过typeof和valueof操作结构体的方式,可以方便快捷地便利结构体的字段,从而更优雅地操作结构体字段。包括一些比较和赋值等操作,如果结构体中有指针类型,则对指针类型特殊处,其他的仍在循环中遍历即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/944713.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号