我有几个打包好的int64文件.我需要在内存中将它们作为int64切片.问题是所有的文件都超过了机器内存大小的一半,所以空间是有限的.围棋中的标准选项类似于:
a := make([]int64, f.Size()/8)
binary.Read(f, binary.LittleEndian, a)
不幸的是,binary
package会立即分配一个大小为f.Size()*8
的[]byte
,并耗尽内存.
如果我一次读取一个字节并将其复制到片中,它确实可以工作,但这太慢了.
理想的情况是将[]byte
直接转换为[]int64
,只需告诉编译器"好了,这些现在是整型了",但显然这不起作用.有什么方法可以实现类似的结果吗?如果绝对需要,可以使用不安全的包或直接使用C语言?