go - 通过分隔符拆分字符串,但提供指向应该拆分的字符串的指针
问题描述
我正在研究将自定义日志格式转换为 .csv 的 ETL 流程。整个事情都在 lambda 内部运行,因此内存受到严重限制。
我正在使用strings.Split(s, sep)
,它工作正常,但字符串没有作为指针传递,这意味着每次创建新副本并在strings.Split
其他函数的内部实现中调用,而所有这些函数都在创建一个新的字符串的副本。
正因为如此,我正在寻找一种方法来用“”(双空格)分割我的日志,并且只提供字符串作为指针。
解决方案
您可以改用bytes包,因为它使用字节切片而不是指针本身。
从文档:
切片是数组段的描述符。它由指向数组的指针、段的长度及其容量(段的最大长度)组成。
据我了解,将字符串转换为字节不会导致复制数据。
bytes.Split示例:
sep := []byte(" ")
s := "my looooong string"
result := bytes.Split([]byte(s), sep)
for _, part := range result {
fmt.Println(string(part))
}
推荐阅读
- javascript - 如何读取 js 应用程序的 firebase 中的最后一个消息节点?
- python - 从 Django Admin 一次添加到多个外键
- python - 是否有任何算法可以根据另一列的组合处理缺失值?
- postgresql - 带有窗口函数postgresql的时间戳中的AVG
- sql - 使用 SELECT ADODB Excel 不工作 (VBA) 的子查询
- asp.net-core - 如何在 .NET Core Entity Framework 中获取授权标头值
- django - Django模板根本不呈现
- analysis - 烟尘的 BranchedForwardFlowAnalysis 中的 flowThrough 方法
- database - 领域驱动设计中共享资源的竞争条件
- python - 将时间序列数据输入一维卷积网络时出错