Go では、関数シグネチャに引数名が存在しないことが不可解に思えるかもしれません。ただし、匿名パラメータは、Go プログラミング言語では特定の目的を果たします。
Go のパラメータ宣言の仕様では、識別子リスト (引数名を含む) はオプションである一方、型は必須であると明示的に規定されています。これは、名前のないパラメータが構文的に有効な構造であることを意味します。
名前のない引数を使用する理由
名前のない引数は、技術的な理由で関数シグネチャにパラメータが存在する場合に使用されますが、関数内で参照されることを意図したものではありません。これはさまざまなシナリオで発生する可能性があります:
例: データの破棄
次の例を考えてみましょう:
type DiscardWriter struct{} func (DiscardWriter) Write([]byte) error { return nil }
この DiscardWriter 型は、 io.Writer インターフェイス。バイト スライス引数を受け入れる Write メソッドが必要です。ただし、DiscardWriter は引数値を使用しません。単にエラーを返すだけです。この場合、引数は必要ないため名前がありません。
混合パラメータ
Go では名前付きと名前なしの混合が許可されていないことに注意することが重要です。パラメータ。 1 つのパラメーターに名前を付ける場合は、すべてのパラメーターに名前を付ける必要があります。次の例に示すように、空白の識別子を使用して、使用されないパラメータを表すことができます。
http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) { io.WriteString(w, "Hello") })
この場合、リクエスト構造は利用されないため、空白の識別子「_」がそのリクエスト構造として使用されます。 name.
結論
Go の名前のない引数は、パラメーターを許可することで実用的な目的を果たします。名前を付けずに関数シグネチャに含めることができます。これは、インターフェイスの実装、互換性の維持、パラメーターが使用または参照されていないことを示すのに役立ちます。
以上がGo 関数で名前のない引数を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。