的Mmap()在系统调用x/sys/unix 包在Golang返回[]byte类型,而底层系统调用实际上返回一个指针。它是如何做到的?
Mmap()
x/sys/unix
[]byte
更具体地说,在Golang开发人员的此程序包中,该VirtualAlloc函数仅返回一个指针。如何将其转换为字节片,就像在Unix软件包中一样?
VirtualAlloc
使用该unsafe包,您可以golang.org/x/sys/unix在未导出类型的Mmap方法中执行相同的操作mmapper:
unsafe
golang.org/x/sys/unix
mmapper
// 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))
这是一个操场的例子。