如何在 Go 中映射 X 的切片?

我正在尝试使用launchpad.net/gommap内存映射数组int32和其他一些自定义结构类型。我严格想在它们位于映射区域的地方使用它们。该gommap.Mmap类型是[]byte,我怎样才能使这部分可作为一些其他类型的片?


料青山看我应如是
浏览 185回答 1
1回答

湖上湖

你必须使用 unsafe 包。func mapInt32(fd uintptr, prot gommap.ProtFlags, flags gommap.MapFlags) ([]int32, error) {    mmap, err := gommap.Map(fd, prot, flags)    if err != nil {        return nil, err    }    header := (*reflect.SliceHeader)(unsafe.Pointer(&mmap))    // account for the size different between byte and int32    header.Len /= 4    header.Cap = header.Len    return *(*[]int32)(unsafe.Pointer(header)), nil}完成后,您可能希望设法取消内存映射。你可以通过以类似的方式不安全地将你的[]int32背投向 a来做到这gommap.MMap一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go