登录
首页 >  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删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>