微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐