Go 指针接收器中的未解析类型
我在一个名为Go 指针接收器中的未解析类型,go,Go,我在一个名为lib的库中输入了Process 我正在尝试从libpackage导入该库并添加一个与type关联的方法 func(p *lib.Process) DoSomething(pp *lib.Process) 但是我在func(…)的内部有一个错误未解析的类型'lib'。这让我很惊讶,因为DoSomething里面没有错误 如何克服它?您不能在另一个包中扩展现有类型。您可以定义自己的类型或子包,如下所示 type LibProcess lib.Process func(p *Lib
lib
的库中输入了Process
我正在尝试从lib
package导入该库并添加一个与type关联的方法
func(p *lib.Process) DoSomething(pp *lib.Process)
但是我在func(…)
的内部有一个错误未解析的类型'lib'
。这让我很惊讶,因为DoSomething里面没有错误
如何克服它?您不能在另一个包中扩展现有类型。您可以定义自己的类型或子包,如下所示
type LibProcess lib.Process
func(p *LibProcess)DoSomething(pp *LibProcess) {}
类型别名与定义
type LibProcess lib.Process // type defintion
type LibProcess = lib.Process // type alias
- 类型定义创建一个与给定类型具有相同基础类型和操作的新的、不同的类型,并将标识符绑定到该类型
- 别名声明将标识符绑定到给定类型
type MyProcess struct {
lib.Process
}
func (p *MyProcess) DoSomething(...) {
// ...
}
使用此方法,
lib.Process
上的所有现有方法以及您自己的方法仍然可以访问。“…由T表示的类型称为接收器基类型;它不能是指针或接口类型,并且必须在与方法相同的包中定义…”LibProcess
不是用于lib.Process
的LibProcess
是一种新类型,它与lib.Process
共享一个基类型LibProcess
没有任何lib.Process
方法。别名不允许这样做。只有一个全新的类型才会出现。@ThunderCat感谢您纠正我的错误,我误解了别名
。类型定义没有固有的方法(这似乎就是您所说的“和操作”)。你需要一个嵌入式。