以下函数名为
GetVersion
func (analytics Analytics) GetVersion() types.ProductVersion {
var version types.ProductVersion
version.Python = "9.1.2"
version.Angular = "4.5.1"
return version
}
返回版本
struct
如下所示:
package types
type ProductVersion struct {
Node string
Vue string
Python string
Angular string
}
另一个包使用上面定义的
GetVersion
函数,调用它为:
productVersions := version.GetVersion()
现在,我想做的是,用新方法扩展相同的结构
ProductVersion
,这样我就可以在productVersions
(从调用GetVersion返回)上调用新函数,如下所示:
productVersions.Foo()
productVersions.Bar()
productVersions.FooBar()
这是我所做的:
type New_ProductVersion types.ProductVersion
func (npv *New_ProductVersion) Foo() {
}
func (npv *New_ProductVersion) Bar() {
}
func (npv *New_ProductVersion) FooBar() {
}
但是当我执行以下操作时,
productVersions := version.GetVersion()
newPV := productVersions.(New_ProductVersion)
// newPV.Foo()
// newPV.Bar()
// newPV.FooBar()
我得到一个错误
Invalid type assertion: productVersions.(ExtendedProductVersion) (non-interface type ProductVersion on the left)
我该如何解决这个错误?