在 golang 中,如何访问带有指针接收器且也在不同包中的方法?

package tests


import (

    "testing"

    "strconv"

    "dir/model"

)


type TestStruct struct {

    ID int

    a  string

    b  string

    c  string

    d  string

    ac bool

    ad bool

}


func TestUpdate(t *testing.T) {


        t.Log("Updating")

        cur := TestStruct{i,a,b,c,d,true,true}

        err := cur.model.Update(a,b,c,d,true,true)

}

在上面的代码块中,我试图调用一个方法,它接受一个接收器指针并且位于包“model”中。


对此的编译器错误是:


引用未定义的字段或方法 'model' err := cur.model.Update(a,b,c,d,e,true,true)


在下面的代码块中,“model”包中的“Udpate”方法将接收器指向一个结构体和其他输入参数。


package model


type Struct struct {

    ID int

    a  string

    b  string

    c  string

    d  string

    ac bool

    ad bool

}


func (update *Struct) Update(a, b, c, d,

e string, f, g bool) error {


    /* code */


}

我知道其他包中的函数我可以在我当前的包中调用它们,说:


packageName.method(parameters) 

当我调用它时输入接收器指针时,如何从包“tests”中的包“model”调用方法“Update”?


慕姐4208626
浏览 256回答 2
2回答

慕村225694

func (update *Struct) Update(a, b, c, d, e string, f, g bool)是在 type 上定义的方法model.Struct。您不能在不同的类型上调用它,例如TestStruct在您的测试包中定义的。您可能想要做的是:    cur := model.Struct{i,a,b,c,d,true,true}    err := cur.Update(a,b,c,d,true,true)

胡说叔叔

例如,package testsimport (    "dir/model"    "testing")func TestUpdate(t *testing.T) {    t.Log("Updating")    cur := model.Struct{i, a, b, c, d, true, true}    err := cur.Update(a, b, c, d, true, true)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go