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)
胡说叔叔
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)
}
- 2 回答
- 0 关注
- 255 浏览
添加回答
举报
0/150
提交
取消