在 Go 语言中对字符串进行子字符串操作时,不会分配新的内存空间。相反,子字符串的底层表示包含一个 Data 指针,该指针是原始字符串 Data 指针的偏移量。
这意味着,如果我有一个很大的字符串并希望跟踪一个小的子字符串,则垃圾回收器将无法释放任何大字符串,直到我释放对较短子字符串的所有引用。
Slices 也有类似的问题,但您可以通过使用 copy() 函数复制子切片来规避此问题。目前我不知道有任何类似于 strings 的复制操作。那么,如何以惯用且最快的方式制作子字符串的“副本”呢?