doudou2121
2016-03-13 20:32
采纳率: 50%
浏览 4.6k
已采纳

我应该如何在Golang中将切片转换为字符串?

我正在分裂一个字符串。

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

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

我是不是应该这样做:

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])
}

图片转代码服务由CSDN问答提供 功能建议

我正在使用字符串。拆分以拆分字符串。

I 希望我的程序保留数组的元素之一并释放基础数组。

不幸的是,我无法弄清楚如何将字符串的片段转换为不包含字符串的字符串。

我应该做这样的事情:

  func unslice(s string)(string  ){
返回字符串([] byte(s))
} 
   
 
 

背景为:

    \ n
  1. 基础字符串很大
  2. 我要保留的切片很小
  3. 我要保留的切片将保留很长时间
  4. 该程序将运行很长时间-数周或更长时间
  5. 在该程序的生命周期内,它将拆分许多这样的字符串(百万)

    以下是回应评论的示例。

      func takeBigStringOften(big string){
     parts:=字符串 .Split(big,  “)
     
     saveTinyStringForALongTime(parts [0])
    } 
       
     
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • duanfu7004 2016-03-13 20:50
    已采纳

    To ensure that Go doesn't keep the underlying string in memory you will have to explicitly copy it to a new location:

    func unslice(old string) string {
        new := make([]byte,len(old))
        copy(new,old)
        return string(old)
    }
    
    SmallString := unslice(BigString[0:7])
    
    评论
    解决 无用
    打赏 举报
  • 查看更多回答(1条)

相关推荐 更多相似问题