github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/gnovm/tests/backup/unsafe4.gno (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"unsafe"
     6  )
     7  
     8  const SSize = 24
     9  
    10  type S struct {
    11  	X int
    12  	Y int
    13  	Z int
    14  }
    15  
    16  func main() {
    17  	arr := []S{
    18  		{X: 1},
    19  		{X: 2},
    20  		{X: 3},
    21  	}
    22  	addr := unsafe.Pointer(&arr[0])
    23  	s := *(*S)(unsafe.Pointer(uintptr(addr) + SSize*2))
    24  
    25  	fmt.Println(s.X)
    26  }
    27  
    28  // Output:
    29  // 3