我正在使用以下功能
import DeviceInfo from 'react-native-device-info';
const uniqueId = DeviceInfo.getUniqueID();
现在我要改变
import (
"m5/cmd/models"
)
func TypeCommand(m Modules) string {
…
}
现在我得到错误“未解决的类型模块”,为什么?第一个函数是编译的......
答案 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的选择器中可见。