熟悉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用於結構體賦值的位元組陣列
golang的反射機制
首先,golang反射,分為 t reflect.typeof n num t.numfield t reflect.typeof n num t.field n int 從0開始,以宣告的順序排序type students struct func stu students t func stu s...
活學活用golang的反射機制
var data map string inte ce type fruit struct func newfruit data map string inte ce fruit return s func main 這樣實現簡單快速,但也有缺點 是否有更好的解決方法,自動遍歷struct物件,並進...
Golang通過反射對結構體進行賦值和其他操作
通過反射可以方便快捷地訪問golang的結構體欄位,並進行賦值或其他操作。當兩個結構體內容相同但名字不同時,如何快捷地進行賦值?或者內容有交集,對交集部分進行賦值 package main import fmt reflect type my struct struct type another s...