gpt4 book ai didi

methods - 在 golang 中,如何访问采用指针接收器且也在不同包中的方法?

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:42 24 4
gpt4 key购买 nike

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”中。

编译器错误是:

引用未定义的字段或方法“模型” 错误 := 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”方法?

最佳答案

func (update *Struct) Update(a, b, c, d, e string, f, g bool)

是在类型 model.Struct 上定义的方法。您不能在不同的类型上调用它,例如在您的测试包中定义的 TestStruct

您可能想要做的是:

    cur := model.Struct{i,a,b,c,d,true,true}
err := cur.Update(a,b,c,d,true,true)

关于methods - 在 golang 中,如何访问采用指针接收器且也在不同包中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35979501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com