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

时间:2018-05-01 10:14:32

标签: go

我正在使用以下功能

import DeviceInfo from 'react-native-device-info'; 

const uniqueId = DeviceInfo.getUniqueID();

现在我要改变

import (
   "m5/cmd/models"
)

func  TypeCommand(m Modules) string {

…

}

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

2 个答案:

答案 0 :(得分:3)

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

import (
   "m5/cmd/models"
)

type myModule struct {
    models.Modules
}

func (m myModule) TypeCommand() string {
  // method code here
}

通过此示例,myModule将包含model.Modules的所有导出字段和方法以及TypeCommand()方法。

答案 1 :(得分:1)

您只能在同一个包中的类型上定义方法。您无法在包Modules外的models类型上定义方法。

来自Go specification on Method declarations

  

通过方法名称前面的额外参数部分指定接收器。该参数部分必须声明一个非可变参数,即接收器。它的类型必须是T或* T形式(可能使用括号),其中T是类型名称。由T表示的类型称为接收器基类型; 它不能是指针或接口类型,必须在与方法相同的包中定义。据说该方法绑定到基类型,并且方法名称仅在类型T或* T的选择器中可见。