我最近尝试使用os.Truncate参数0清除文件的内容,然后将修改后的版本重写(我知道这是一种非常不安全的做法,但文件的内容对我来说并不重要).
令我震惊的是Truncate没有重置文件的光标,所以当我写回文件时,我最后得到一个前缀为一堆空字节的文件(对应于前面内容的大小),除非我使用file.Seek(0, 0)预先.
所以我的问题是:这是一个语言的错误,在实现该功能时被遗忘的东西,还是故意的,并且出于某种神秘的原因它是一种理想的行为?这可能是什么神秘的原因?
我正在使用go版本go1.3.3 linux/amd64