golang diff类型的函数提供“未解析的类型”

2 go

我正在使用类似下面的功能

import (
   "m5/cmd/models"
)

func  TypeCommand(m Modules) string {

…

}
Run Code Online (Sandbox Code Playgroud)

现在我要改变

func (m models.Modules) TypeCommand() string {

}
Run Code Online (Sandbox Code Playgroud)

现在我收到错误消息“未解决的类型模块”,为什么?第一个函数被编译...

Gil*_*esW 5

您不能从定义它们的包外部将方法添加到类型。如果您确实有必要,那么解决方法是定义一个新类型,该新类型将嵌入导入的类型并将其扩展。然后,您将得到一个包含所有原始方法和新方法的类型:

import (
   "m5/cmd/models"
)

type myModule struct {
    models.Modules
}

func (m myModule) TypeCommand() string {
  // method code here
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,myModule将具有所有导出的字段和方法model.Modules以及TypeCommand()方法。