指针接收器中未解析的类型

时间:2018-05-10 15:19:36

标签: go

我在名为Process的库中输入了lib

我正在尝试导入该库并添加与lib包中的类型相关联的方法。

func(p *lib.Process) DoSomething(pp *lib.Process) 

但我在unresolved type 'lib'内有错误func(...)。这对我来说很令人惊讶,因为DoSomething内没有错误。

如何克服它?

2 个答案:

答案 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
  • 类型定义创建一个新的,不同的类型,它具有与给定类型相同的基础类型和操作,并将标识符绑定到它。

  • 别名声明将标识符绑定到给定类型。