golang---利用反射机制对结构体进行循环赋值

来源:互联网 发布:淘宝清洗后钱该怎么办 编辑:程序博客网 时间:2024/06/06 18:32


熟悉C语言的朋友都知道,C语言的指针操作某些方面是很方便的。

如假设你知道内存中有一个连续100个字节的区域,或者你有一个连续100个字节的字节数组,你需要用其对一个已经定义好的结构体进行赋值,在c语言你可以简单地将内存数据中的头地址,或者字节数组的头地址赋值给结构体指针就行。

但在go语言中该如何实现?

假设你有如下的golng结构体:



这个结构体的数据可以对应一个byte[100]字节组。

例如 DTemp_Des 字段的低位时b[1],高位是b[2]

Temp_Des 的低位时b[3],高位b[4] 如此类推


但你对这个结构体赋值的时候你不能笨笨地一个个赋值,如果字段少还可以,字段多比如100个字段,那你会疯掉

笨的做法:

nm:=&NM820_SysVal{}nm.DTemp_Des=uint16(b[1])+uint16(b[2]<<8)........一个个赋值

详细代码如下



注意:

1.开头要引入reflect包

2.变量nm为结构体指针

3.数组b用于结构体赋值的字节数组




0 0
原创粉丝点击