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  }