我在名为Process
的库中输入了lib
。
我正在尝试导入该库并添加与lib
包中的类型相关联的方法。
func(p *lib.Process) DoSomething(pp *lib.Process)
但我在unresolved type 'lib'
内有错误func(...)
。这对我来说很令人惊讶,因为DoSomething
内没有错误。
如何克服它?
答案 0 :(得分:6)
您无法扩展其他包中定义的类型。您可以做的是,将类型嵌入到您自己类型的另一个包中,然后扩展您自己的类型。例如:
type MyProcess struct {
lib.Process
}
func (p *MyProcess) DoSomething(...) {
// ...
}
使用此方法,lib.Process
上的所有现有方法仍然可以访问,也可以自己访问。
答案 1 :(得分:1)
您无法在另一个包中扩展现有类型。您可以按如下方式定义自己的类型或子包。
type LibProcess lib.Process
func(p *LibProcess)DoSomething(pp *LibProcess) {}
输入别名vs defintion
type LibProcess lib.Process // type defintion
type LibProcess = lib.Process // type alias
类型定义创建一个新的,不同的类型,它具有与给定类型相同的基础类型和操作,并将标识符绑定到它。
别名声明将标识符绑定到给定类型。