在学习过程中,我遇到了以下错误:
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)
}
有谁愿意帮助我继续前进?
答案 0 :(得分:12)
遗憾的是,您的错误有些误导。问题在于它是一种实例方法,您可以将其称为它在包范围内的方法。
你需要这样的东西;
func main() {
var in []byte
jp := JSONParser{}
actual, err2 := jp.Parse(in)
}
我猜这个错误的措辞是这样的,因为接收者(函数名左侧网站上的parens中的东西)的处理方式与后台传递给函数的任何其他参数一样。
如果您想调用您的方法,那么定义只是func Parse(toParse []byte) ([]Schema, int)
,如果它位于名为JSONParser
的包中,那么这将是正确的语法。如果它与您的示例中的相同包中定义,则只需将其称为Parse(in)