调用方法表达式的参数不足
在学习过程中,我遇到以下错误:
prog.go:18: not enough arguments in call to method expression JSONParser.Parse
在我的测试程序(https://play.golang.org/p/PW9SF4c9q8)中:
package maintype 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