github.com/HaHadaxigua/yaegi@v1.0.1/_test/unsafe3.go (about) 1 package main 2 3 import ( 4 "math/bits" 5 "unsafe" 6 ) 7 8 const ( 9 SSize = 16 10 WSize = bits.UintSize / 8 11 ) 12 13 type S struct { 14 X int 15 Y int 16 } 17 18 func main() { 19 bigEndian := (*(*[2]uint8)(unsafe.Pointer(&[]uint16{1}[0])))[0] == 0 20 var sBuf [SSize]byte 21 s := (*S)(unsafe.Pointer(&sBuf[0])) 22 23 s.X = 2 24 s.Y = 4 25 26 if bigEndian { 27 println(sBuf[0+WSize-1], sBuf[WSize+WSize-1]) 28 } else { 29 println(sBuf[0], sBuf[WSize]) 30 } 31 } 32 33 // Output: 34 // 2 4