使用*bufio列表是个好主意吗?扫描稍后在 golang 中读取的文件?



我有一个分隔文件的列表,在我获得它们的路径后要读取。我想知道我是否可以简单地存储 *bufio 列表,而不是将路径保存为字符串。扫描仪,以便以后更容易阅读(代码也会更干净(?下面是一个快速示例:

func main(){
scannerList := read(filenameList)
dowork(scannerList)
}
func read(filenameList []string) (scannerList []*bufio.Scanner){
for _, filename := range filenameList{
op, _ := os.Open(filename)
defer op.Close()
scanner := bufio.NewScanner(op)
scannerList = append(scannerList, scanner)
}
return
}
func dowork(scannerList []*bufio.Scanner){
for _, scanner := range scannerList{
for scanner.Scan(){
//read stuff
}
//do stuff
}
}

我的代码类似于上面的例子编译,但我不知道这是否被推荐(或有效(。有什么意见吗?谢谢!

Scanner是一个复杂的结构,并且嵌入了一个缓冲区。 缓冲区可以动态增长(取决于scan函数请求的内容(高达 64kB (MaxScanTokenSize(。

因此,一般来说,保留冗余Scanner不是一个好主意,因为在丢弃Scanner之前无法释放缓冲区。 但也许额外的几千字节内存在您的情况下并不重要。

最新更新