Golang包中的Mmap()
系统调用返回一个类型,而底层系统调用实际上返回一个指针。它是如何做到的?x/sys/unix
[]byte
更具体地说,在Golang 开发人员的这个VirtualAlloc
包中,函数只是返回一个指针。如何将其转换为字节切片,就像在 Unix 包中所做的一样?
从 Go 1.17 开始,您现在可以使用unsafe.Slice:
mySlice := unsafe.Slice(ptr, numElements)
您可以使用类似的东西C.GoBytes
(例如,请参见此处):
// C data with explicit length to Go []byte
func C.GoBytes(unsafe.Pointer, C.int) []byte