熟悉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用于结构体赋值的字节数组
来源:CSDN
作者:鱼鱼AA
链接:https://blog.csdn.net/qq317808023/article/details/50192897