我正在尝试string使用utf8库有效地计算来自 utf-8 的符文。这个例子是否是最佳的,因为它不复制底层数据?https://golang.org/pkg/unicode/utf8/#example_DecodeRuneInStringfunc main() { str := "Hello, 世界" // let's assume a runtime-provided string for len(str) > 0 { r, size := utf8.DecodeRuneInString(str) fmt.Printf("%c %v\n", r, size) str = str[size:] // performs copy? }}我在(不安全的)反射库中找到了StringHeader 。string这是Go 中a 的确切结构吗?如果是这样,可以想象对字符串进行切片只是更新Data或分配一个新的StringHeader字符串。type StringHeader struct {
Data uintptr
Len int
}奖励:我在哪里可以找到执行切片的代码string以便我自己查找?这些中的任何一个?https://golang.org/src/runtime/slice.gohttps://golang.org/src/runtime/string.goThis related SO answer表明运行时字符串从string转换为时会产生一个副本[]byte。
目前暂无任何回答
- 0 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消