在调用方法表达式时没有足够的参数

时间:2016-07-29 19:43:22

标签: go

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

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)
}

有谁愿意帮助我继续前进?

1 个答案:

答案 0 :(得分:12)

遗憾的是,您的错误有些误导。问题在于它是一种实例方法,您可以将其称为它在包范围内的方法。

你需要这样的东西;

func main() {
    var in []byte
    jp := JSONParser{}
    actual, err2 := jp.Parse(in)
}

我猜这个错误的措辞是这样的,因为接收者(函数名左侧网站上的parens中的东西)的处理方式与后台传递给函数的任何其他参数一样。

如果您想调用您的方法,那么定义只是func Parse(toParse []byte) ([]Schema, int),如果它位于名为JSONParser的包中,那么这将是正确的语法。如果它与您的示例中的相同包中定义,则只需将其称为Parse(in)