当前显示为未定义golang的方法

时间:2019-03-26 01:42:45

标签: go

我正在尝试从其他目录调用方法,但收到一条错误消息,指出该方法不存在。我有首字母大写的方法。

我具有以下目录结构

[laptop@laptop src]$ tree
.
├── hello
│   ├── hello.go
├── remote_method
│   └── remoteMethod.go

我的主要用户在hello.go中,并尝试从remote_method包中调用函数

package main
import 
 (
        "remote_method"
 )

func main() {
     mm := remote_method.NewObject()
     mm.MethodCall()
}

remoteMethod.go具有以下内容

package remote_method

import (
.....
)

type DeclaredType struct {
        randomMap (map[string][](chan int))
}

func NewObject() DeclaredType {
        var randomMap (map[string][](chan int))
        m := DeclaredType{randomMap}
        return m
}

func MethodCall(m DeclaredType, param1 string, param2 string, param3 string, param4 string) {
     // Code to be run
}

我收到错误

mm.MethodCall undefined (type remote_method.DeclaredType has no field or method MethodCall)

有人可以帮助我找到为什么该方法不可见或我可以找到任何可能的方法。 TIA

1 个答案:

答案 0 :(得分:6)

将MethodCall()注册为DeclaredType的接收者。

remote_method.go

package remote_method

import (
.....
)

type DeclaredType struct {
        randomMap (map[string][](chan int))
}

func NewObject() DeclaredType {
        var randomMap (map[string][](chan int))
        m := DeclaredType{randomMap}
        return m
}

func (d DeclaredType) MethodCall(m DeclaredType, param1 string, param2 string, param3 string, param4 string) {
     // Code to be run
}