如果给出了文件名,我尝试将文件设置为输入;如果未给出文件名,则使用标准输入。我本以为这是这样做的方法:
var input io.Reader
if filename == "" {
input = os.Stdin
} else {
input, err = os.Open(filename)
if err != nil {
log.Fatalf("failed to open file: %v", err)
}
}
Run Code Online (Sandbox Code Playgroud)
传递的函数input需要符合接口的东西io.Reader并且一切都表现良好。就是上面的作品...
它一直有效,直到我试图找到一种关闭方法input。尽管 os.Stdin 和 os.Open 返回了这两件事(当然,关闭 stdin 可能没有多大意义,但它是无害的)。编译器不知道这两种创建方式input都会给我一些实现 Close() 的东西。所以我想知道有没有一种方法可以告诉编译器是Close()为input.
go ×1