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