为了账号安全,请及时绑定邮箱和手机立即绑定

字符串切片是否执行基础数据的复制?

字符串切片是否执行基础数据的复制?

Go
哆啦的时光机 2023-04-04 17:11:08
我正在尝试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 关注
  • 70 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信