作者回复: 这个问题其实官方并没有给出解释,我个人认为string通过slice来实现,可以利用不同slice重用后端连续存储空间的概念(参考该课程相关章节)。这样来实现与其他语言类似的相同内容的字符串复用同一存储空间, 甚至子串也可重用存储空间。
str1 := "Hello"
str2 := "Hello"
header1 := (*reflect.StringHeader)(unsafe.Pointer(&str1))
header2 := (*reflect.StringHeader)(unsafe.Pointer(&str2))
fmt.Println(header1.Data == header2.Data) //true
作者回复: 可以用来获取string中的unicode字符,
作者回复: 同样可以输出unicode字符