Converting a pointer to a byte slice

随声附和 提交于 2019-12-06 12:44:47

Using the unsafe package you can do the same thing golang.org/x/sys/unix does in the Mmap method of its unexported mmapper type:

// Slice memory layout
var sl = struct {
    addr uintptr
    len  int
    cap  int
}{addr, length, length}

// Use unsafe to turn sl into a []byte.
b := *(*[]byte)(unsafe.Pointer(&sl))

Here's a playground example.

You could use something like C.GoBytes (e.g. see here):

// C data with explicit length to Go []byte
func C.GoBytes(unsafe.Pointer, C.int) []byte
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!