go - 是否有 API 可以从阅读器读取一行,但限制返回行的长度?

标签 go

原型(prototype)是:

 (reader *Reader) ReadLineWithMaxLength (delim byte, max int) (line []byte, err error)

当找到 delim 或达到 max 长度时,它返回一行。

最佳答案

我认为没有直接的功能,但使用 io.LimitReader 实现一个很简单。

func ReadLimitedLine(r io.Reader, delim byte, max int64) ([]byte, error) {
    l, err := bufio.NewReader(io.LimitReader(r, max)).ReadBytes(delim)
    if err != nil && err != io.EOF {
        return nil, err
    }

    // ReadBytes includes the delimiter in return value
    return bytes.TrimSuffix(l, []byte{delim}), nil
}

关于go - 是否有 API 可以从阅读器读取一行,但限制返回行的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32676034/

相关文章:

string - Go:从两个字符或其他字符串之间检索字符串

mysql - mysql的语法数组

go - 这段 Go 代码有什么作用?是继承吗?

go - hackerrank 圆形阵列旋转 Go 运行时错误

go - 如何修复 Mac 上的 dep ensure 错误 'cannot stat file'?

json - Go:过滤 JSON 响应

go - 如何将动态类型的数据写入结构中的字段

go - 使用 Go 包中的私有(private) "lowercase"函数

json - 已导入包但未在 JSON 解析器中使用

go - 无法使用 TensorFlow Go API 进行预测