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