我正在分裂一个字符串。

我希望我的程序保留数组的一个元素并释放底层数组。

不幸的是,我不知道如何将字符串的一个片段转换为不引用底层字符串的字符串。

我是不是应该这样做:

func unslice(s string) (string) {
  return string([]byte(s))
}

背景是:

  1. 底层的字符串非常大
  2. 我想保留的部分很小
  3. 我想保留的部分会保留很长时间
  4. 这个程序会运行很长一段时间,甚至更长时间
  5. 在程序的生命周期中,它将分割这些字符串中的许多(数百万)

下面是一个回应评论的例子:

func takesBigStringOften(big string) {
    parts := strings.Split(big, " ")

    saveTinyStringForALongTime(parts[0])
}