The Mmap()
syscall in the x/sys/unix
package in Golang returns a []byte
type, while the underlying syscall actually returns a pointer. How does it do this?
More specifically, in this package by a Golang developer, the VirtualAlloc
function simply returns a pointer. How can this be converted to a byte slice, the same way as it's done in the Unix package?
You could use something like
C.GoBytes
(e.g. see here):Using the
unsafe
package you can do the same thinggolang.org/x/sys/unix
does in the Mmap method of its unexportedmmapper
type:Here's a playground example.