github.com/traefik/yaegi@v0.15.1/_test/unsafe4.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "math/bits" 6 "unsafe" 7 ) 8 9 const WSize = bits.UintSize / 8 10 11 type S struct { 12 X int 13 Y int 14 Z int 15 } 16 17 func main() { 18 arr := []S{ 19 {X: 1}, 20 {X: 2}, 21 {X: 3}, 22 } 23 addr := unsafe.Pointer(&arr[0]) 24 // s := *(*S)(unsafe.Pointer(uintptr(addr) + SSize*2)) 25 s := *(*S)(unsafe.Pointer(uintptr(addr) + WSize*6)) 26 27 fmt.Println(s.X) 28 } 29 30 // Output: 31 // 3