在我的一个 golang 项目中,我为测试用例模拟了 os.FileInfo
。
我不确定我是否正确理解了golang的接口(interface)处理。 据我所知,以下代码应该可以工作,但我收到一个编译器错误,指出接口(interface)不匹配。
我修改了this go-doc 示例,以防您想自己测试一下。
package main
import (
"fmt"
"io/ioutil"
"log"
)
type file interface{
Name() string
}
func readFiles() []file{
files, err := ioutil.ReadDir(".")
if err != nil {
log.Fatal(err)
}
return files
}
func main() {
files := readFiles()
for _, file := range files {
fmt.Println(file.Name())
}
}
在 golang 文档之后,ioutil.ReadDir(".")
应该返回一段 os.FileInfo
这应该是我自己编写的 文件
接口(interface)。
谁能帮我走出这 hell 般的误会和纠结,好吗?
非常感谢你们!
最佳答案
os.FileInfo
是接口(interface),可以转换成file
。但是您尝试将 []os.FileInfo
转换为 []file
。 Slice 不是接口(interface),不能断言。
关于unit-testing - os.FileInfo 模拟不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43769695/