Go で「メソッド式の呼び出しに十分な引数がありません」エラーを回避する方法
Go を使用しているときに、次のエラー:
prog.go:18: not enough arguments in call to method expression JSONParser.Parse
このエラーは、インスタンス メソッドをパッケージ スコープのメソッドであるかのように呼び出そうとすると発生する可能性があります。つまり、メソッドを呼び出すインスタンスを明示的に指定する必要があります。
次のコード スニペットを考えてみましょう。
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) // This will result in the error }
エラーを修正するには、次のコードを作成する必要があります。 JSONParser 型のインスタンスを取得し、そのインスタンスで Parse メソッドを呼び出します。その方法は次のとおりです。
func main() { var in []byte jp := JSONParser{} // Create an instance of JSONParser actual, err2 := jp.Parse(in) // Call the Parse method on the instance }
または、Parse メソッドをレシーバーなしの関数として定義し、直接呼び出すこともできます。
func Parse(toParse []byte) ([]Schema, int) { var schema []Schema // whatever parsing logic return schema, 0 } func main() { var in []byte actual, err2 := Parse(in) // Call the Parse function directly }
インスタンスを明示的に指定するか、レシーバーなしで関数を使用すると、「メソッド式の呼び出しに十分な引数がありません」エラーを回避し、Go でインスタンス メソッドを正しく呼び出すことができます。
以上がGo で「メソッド式の呼び出しに十分な引数がありません」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。