歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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()
}

Copyright © Linux教程網 All Rights Reserved