我是Go语言的新手,我试图熟悉接口及其可分配性。
我正试图将参数从struct
传递到function
,该参数是从另一个package
导入的。
main.go 软件包:
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()
}
anotherPackage.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
答案 0 :(得分:2)
您不能像其他面向对象的语言那样在Go中执行此操作,因为Go不支持多态。如何使用T1接口作为ExportedFunction而不是S1的参数。 例 https://play.golang.org/p/72hgbSwNkaS