【Go】实现字符切片零拷贝开销转为字符串

阅读 41

2024-08-21

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	bytes := []byte("hello world")
	s := *(*string)(unsafe.Pointer(&bytes))
	fmt.Println(s)
	bytes[0] = 'H'
	fmt.Println(s)
}

在这里插入图片描述
slice的底层结构是底层数组、len字段、cap字段。string的底层结构是底层数组和len字段。通过unsafe操作将slice的底层数组直接转为string的底层数组。二者共用同一个底层数组。

精彩评论(0)

0 0 举报