Go では、「メソッド式の呼び出しで引数が足りません」というエラーが発生すると、混乱を招く可能性があります。理解する必要がある重要な詳細は、パッケージ レベルの構文を使用してインスタンス メソッドが呼び出されたときにエラーが発生するということです。この問題をさらに詳しく調べるために、コードの特定の例を分析してみましょう。
func main() { var in []byte actual, err2 := JSONParser.Parse(in) }
ここでは、JSONParser タイプの Parse メソッドを呼び出そうとしています。ただし、パッケージスコープ内の関数であるかのように呼び出しています。正しいアプローチは、最初に JSONParser のインスタンスを作成し、次にそのインスタンスでメソッドを呼び出すことです。
func main() { var in []byte jp := JSONParser{} // Create an instance of JSONParser actual, err2 := jp.Parse(in) // Now call the method on the instance }
誤解を招くエラー メッセージの理由は、メソッド レシーバー (関数名の前にある括弧内のパラメーター) ) は、関数に渡される他の引数と同様に動作します。したがって、コンパイラーは、明示的に提供されたレシーバーが存在しないことを、引数の数が不十分であると解釈します。
要約すると、インスタンス メソッドを呼び出すときは、型をインスタンス化してから、インスタンス上でメソッドを呼び出すようにしてください。パッケージスコープ内の関数として直接呼び出すよりも便利です。
以上がGo がインスタンス メソッドを呼び出すときに「引数が足りません」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。