侧边栏壁纸
博主头像
七哥的技术博客

You got a dream, you gotta to protect it!

  • 累计撰写 60 篇文章
  • 累计创建 71 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Converting a pointer to a byte slice

admin
2024-11-25 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

如果是从裸指针直接转为 []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))
}
0

评论区