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的底层数组。二者共用同一个底层数组。