github.com/fananchong/cstruct-go@v0.0.0-20220616060855-b65d9a2f2e17/example/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "unsafe" 6 7 "github.com/fananchong/cstruct-go" 8 ) 9 10 type StructA struct { 11 A1 uint8 12 A2 uint32 13 A3 [5]uint8 14 } 15 16 type StructB struct { 17 B1 uint8 18 B2 StructA 19 B3 uint16 20 B4 float32 21 B5 [3]StructA 22 } 23 24 func main() { 25 b := StructB{} 26 b.B1 = 127 27 b.B2.A1 = 56 28 b.B2.A2 = 999 29 b.B2.A3[0] = 0 30 b.B2.A3[1] = 1 31 b.B2.A3[2] = 2 32 b.B2.A3[3] = 3 33 b.B2.A3[4] = 4 34 b.B3 = 8888 35 b.B4 = 88.8 36 b.B5[0] = b.B2 37 b.B5[1] = b.B2 38 b.B5[2] = b.B2 39 40 data, _ := cstruct.Marshal(&b) 41 42 fmt.Println("len(b) =", unsafe.Sizeof(b)) 43 fmt.Println("struct data len = ", len(data)) 44 fmt.Println("struct data is:") 45 for i := 0; i < len(data); i++ { 46 fmt.Printf("%d ", data[i]) 47 } 48 }