2 回答
TA贡献1803条经验 获得超6个赞
或者根本不声明文件,如果你不打算用它做任何事情。
if _, err := macho.Open(filename); err != nil {
fmt.Println("Not an Mach-O file.")
}
if _, err = macho.OpenFat(filename); err != nil {
fmt.Println("Not an fat Mach-O file. Exiting.")
return
}
如果您确实想在 File 上调用某个函数,那么您可以使用要调用的 func(s) 将其声明为接口类型,然后您可以这样说:
var file io.Closer
file, err := macho.Open(filename)
if err != nil {
fmt.Println("Not an Mach-O file.")
}
file, err = macho.OpenFat(filename)
if err != nil {
fmt.Println("Not an fat Mach-O file. Exiting.")
return
}
file.Close()
在这种情况下,它不是那么有趣,因为它看起来像 macho.File 和 macho.FatFile 唯一的公共函数是 Close()
TA贡献1860条经验 获得超9个赞
由于 go 是强类型的,您不能将不同的类型分配给同一个变量。
解决问题的简单方法是在第二次调用中使用另一个变量。
file2, err := macho.OpenFat(filename)
if err != nil {
fmt.Println("Not an fat Mach-O file. Exiting.")
return
}
您还可以让 OpenFat 和 Open 方法返回相同的类型或实现相同的接口。
这里很好地解释了 go 接口的工作原理。
- 2 回答
- 0 关注
- 344 浏览
添加回答
举报