登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  Golang >  Go问答

使用指针将字符串按分隔符拆分

来源:stackoverflow

时间:2024-03-25 15:12:32 202浏览 收藏

为了优化 ETL 流程,本文提出了一种使用指针分割字符串的方法,以避免创建字符串的新副本。传统的 strings.Split 函数会创建新副本,从而消耗大量内存。而使用 bytes 包可以利用字节片,它们本身是数组段的指针,不会导致数据复制。

问题内容

我正在开发一个 ETL 流程,将自定义日志格式转换为 .csv。整个过程都在 lambda 内部运行,因此内存受到严重限制。

我正在使用 strings.Split(s, sep),它工作正常,但字符串不作为指针传递,这意味着每次创建新副本以及在 strings 的内部实现中。 Split 调用其他函数,这些函数依次创建字符串的新副本。

因此,我正在寻找一种用“”(双倍空格)分割日志并仅提供字符串作为指针的方法。


解决方案


您可以改用 bytes 包,因为它使用字节片,而字节片本身不是指针。

来自docs:

切片是数组段的描述符。它由指向数组的指针、段的长度及其容量(段的最大长度)组成。

根据我的理解,将字符串转换为字节不会导致复制数据。

以 bytes.Split 为例:

sep := []byte("  ")
s := "my looooong string"

result := bytes.Split([]byte(s), sep)
for _, part := range result {
    fmt.Println(string(part))
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>