недостаточно аргументов в вызове выражения метода
во время обучения 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 ответов
ваша ошибка, к сожалению, несколько вводит в заблуждение. Проблема в том, что это метод экземпляра, и вы вызываете его, как будто это метод в области пакетов.
вам нужно что-то вроде этого;
func main() {
var in []byte
jp := JSONParser{}
actual, err2 := jp.Parse(in)
}
Я предполагаю, что ошибка сформулирована так, потому что приемник (вещь в parens на левом сайте имени функции) обрабатывается как любой другой аргумент, передаваемый функции в фоновом режиме.
если вы хотите вызвать свой метод, как что определение будет просто func Parse(toParse []byte) ([]Schema, int)
и если бы он был в пакете под названием JSONParser
тогда это был бы правильный синтаксис. Если бы он был определен в том же пакете, что и в вашем примере, вы бы просто назвали его like Parse(in)