七哥向前冲

You got a dream, you gotta to protect it!

站内搜索

选择搜索引擎,输入关键词开始搜索

Google
Bing
Yahoo
百度
💡 小贴士:选择不同的搜索引擎可能会得到不同的搜索结果

Converting a pointer to a byte slice

发布日期:2024-11-25 |文章分类: 默认分类

如果是从裸指针直接转为 []byte 数组接收,会出现异常,需要准备 []byte 的底层结构再行转换

https://stackoverflow.com/questions/43591047/converting-a-pointer-to-a-byte-slice

https://play.golang.org/p/An7jG5xl2W

package main

import (
    "fmt"
    "reflect"
    "unsafe"
)

var data = []byte(`foobar`)

func main() {
    rv := reflect.ValueOf(data)
    
    ptr := rv.Pointer()
    length := rv.Len()
    
    var sl = struct {
        addr uintptr
        len  int
        cap  int
    }{ptr, length, length}

    b := *(*[]byte)(unsafe.Pointer(&sl))
    
    fmt.Println(string(b))
}