structfunctionpackage
package main
import {
anotherPackage
}
type I1 interface {
anotherPackage.I2
}
type T1 struct {
*anotherPackage.S1
}
type T2 struct {
variable1 T1
}
type T3 struct {
variable2 T2
}
func handler() {
var fromI I
var input = T3{}
template := fromI.ExportedFunction(input.T3.variable1)
}
func main() {
handler()
}
另一个package.go包
package anotherPackage
type I2 interface {
ExportedFunction(S1)
}
type S1 struct {
Path string
File string
}
type S2 struct {}
func (s2 *S2) ExportedFunction(s1 S1) {}
我一直在出错:
cannot use input.T3.variable1 (type T1) as type anotherPackage.S1 in argument to fromI.ExportedFunction
最佳答案:
在Go中不能像其他面向对象语言那样做,因为Go不支持多态性。如何使用T1接口作为参数来导出函数而不是s1。
例子
https://play.golang.org/p/72hgbSwNkaS