为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕姐4208626 2021-12-20 19:06:35
package testsimport (    "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 modeltype 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”?
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

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)


查看完整回答
反对 回复 2021-12-20
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

例如,


package tests


import (

    "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)

}


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信