golang里如何将一个struct指针转换成slice

golang里如何将一个struct指针转换成slice代码:

package main

import "unsafe"
import "fmt"

func abc() {
 type T struct {
  a int
  b int
  c int
 }

type SliceHeader struct {
  addr uintptr
  len  int
  cap  int
 }

t := &T{a: 1, b: 2, c: 3}
 p := unsafe.Sizeof(*t)
 println(int(p))

sl := &SliceHeader{
  addr: uintptr(unsafe.Pointer(t)),
  len:  int(p),
  cap:  int(p),
 }

b := *(*[]byte)(unsafe.Pointer(sl))
 println(len(b))
 fmt.Println(b)

b[0] = 7
 b[4] = 5
 b[8] = 8

fmt.Println(t)

}

func main() {
 abc()
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/4bb2aca2cb15b82a8012f23f794ba9d0.html