什么神奇问题 ?Go 在文件 IO 的场景有个神奇的事情。打开一个文件的时候,返回的竟然不是 interface ,而是一个 os.File 结构体的指针。func Open(name string) (*File, error) { return OpenFile(name, O_RDONLY, 0)}划重点:这个意味着,Go 的文件系统的概念和 OS 的文件系统的概念直接关联起来。你必须传入一个文件路径,并且必须真的要去打开一个操作系统的文件。不用接口,而是跟具体类型强相关的话,会导致后续的扩展性不好。比如,全都是 os 包的使用,那么将操作强绑定在 OS 文件系统上。最常见的,在单测的时候用的这种方式的话,就真的要在操作系统上打开文件做操作。Go 的设计者对此一直耿耿于怀,但是也很无奈。因为用户已经用上了,Go 的承诺是往前兼容,直接修改原有语义和接口肯定不行。怎么办?Go 1.16 给了我们答案。Go 给了我们一个 i
………………………………