专栏名称: Linux爱好者
伯乐在线旗下账号,「Linux爱好者」专注分享 Linux/Unix 相关内容,包括:工具资源、使用技巧、课程书籍等。
目录
相关文章推荐
今天看啥  ›  专栏  ›  Linux爱好者

Go 眼中的文件系统是什么? io.FS

Linux爱好者  · 公众号  · linux  · 2022-10-16 11:50
什么神奇问题 ?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 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照