我正在嘗試string使用utf8庫有效地計算來自 utf-8 的符文。這個例子是否是最佳的,因?yàn)樗粡?fù)制底層數(shù)據(jù)?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 的確切結(jié)構(gòu)嗎?如果是這樣,可以想象對字符串進(jìn)行切片只是更新Data或分配一個新的StringHeader字符串。type StringHeader struct {
Data uintptr
Len int
}獎勵:我在哪里可以找到執(zhí)行切片的代碼string以便我自己查找?這些中的任何一個?https://golang.org/src/runtime/slice.gohttps://golang.org/src/runtime/string.goThis related SO answer表明運(yùn)行時字符串從string轉(zhuǎn)換為時會產(chǎn)生一個副本[]byte。
字符串切片是否執(zhí)行基礎(chǔ)數(shù)據(jù)的復(fù)制?
哆啦的時光機(jī)
2023-04-04 17:11:08