在学习的过程中,我遇到了以下错误:
prog.go:18: not enough arguments in call to method expression JSONParser.Parse
Run Code Online (Sandbox Code Playgroud)
在我的测试程序中(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)
}
Run Code Online (Sandbox Code Playgroud)
有谁愿意帮助我继续前进?
eva*_*nal 16
遗憾的是,您的错误有些误导.问题是它是一个实例方法,你正在调用它,好像它是包范围内的方法.
你需要这样的东西;
func main() {
var in []byte
jp := JSONParser{}
actual, err2 := jp.Parse(in)
}
Run Code Online (Sandbox Code Playgroud)
我猜错误就是这样,因为接收器(函数名左侧网站上的parens中的东西)被处理,就像传递给后台函数的任何其他参数一样.
如果你想调用你的方法就像定义那样func Parse(toParse []byte) ([]Schema, int)
,如果它在一个被调用的包中,JSONParser
那么这将是正确的语法.如果它在您的示例中的相同包中定义,您只需将其称为Parse(in)
归档时间: |
|
查看次数: |
7368 次 |
最近记录: |