调用方法表达式的参数不足

在学习过程中,我遇到以下错误:

prog.go:18: not enough arguments in call to method expression JSONParser.Parse

在我的测试程序(https://play.golang.org/p/PW9SF4c9q8)中:

package main

type Schema struct {

}

type JSONParser struct {

}

func (jsonParser JSONParser) Parse(toParse []byte) ([]Schema, int) {

var schema []Schema

// whatever parsing logic

return schema, 0

}

func main() {

var in []byte

actual, err2 := JSONParser.Parse(in)

}

有人愿意帮助我继续前进吗?

回答:

不幸的是,您的错误有些令人误解。问题在于它是一个实例方法,您在调用它时就好像它是程序包作用域中的一个方法一样。

您需要这样的东西;

func main() {

var in []byte

jp := JSONParser{}

actual, err2 := jp.Parse(in)

}

我猜该错误的措辞是这样的,因为接收器(函数名称左侧位置中的括号中的内容)的处理方式与在后台传递给函数的任何其他参数一样。

如果您希望像这样调用您的方法,那么定义将是正确的,func Parse(toParse []byte) ([]Schema,

int)并且如果该定义位于被调用的包中,JSONParser那么这将是正确的语法。如果在与您的示例相同的包中定义了它,则只需将其命名为Parse(in)

以上是 调用方法表达式的参数不足 的全部内容, 来源链接: utcz.com/qa/404626.html

回到顶部