ホームページ >バックエンド開発 >Golang >Go で複数の戻り値を可変引数関数に渡すにはどうすればよいですか?

Go で複数の戻り値を可変引数関数に渡すにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-27 19:53:10722ブラウズ

How to Pass Multiple Return Values to a Variadic Function in Go?

複数の戻り値を可変引数関数に渡す

問題:

やってみよう2 つの整数を返し、両方の値を文字列フォーマットを使用して出力したい関数fmt.Println() 呼び出し。ただし、このアプローチは Go のデフォルトではサポートされていません。

解決策:

複数の戻り値を fmt.Println() に直接渡すことはできませんが、 fmt.Printf() で同じ結果を達成するトリックを使用できます:

  1. ユーティリティ関数を作成します。 Wrap()。可変数の入力を受け取り、[]interface{} のスライスを返します。
  2. 関数の戻り値を指定して Wrap() を呼び出し、それらを個別のパラメータとして渡します。
  3. 結果のスライスを可変引数パラメータの値として fmt.Printf() に渡します ....

これは例:

func wrap(vs ...interface{}) []interface{} {
    return vs
}

func twoInts() (int, int) {
    return 1, 2
}

func main() {
    fmt.Printf("first= %d and second = %d", wrap(twoInts()...)...)
}

この方法では、複数の戻り値を可変個引数関数に渡すことができ、fmt.Printf() 内の文字列フォーマットを使用してそれらの値を出力できるようになります。

注:

  • fmt.Println() は、少なくとも以下を返す関数で引き続き使用できます。余分な戻り値は 1 つの値で、自動的に可変引数パラメーターに割り当てられます。
  • wrap() ユーティリティ関数は、任意の数の戻り値を持つ関数を処理するように一般化できます。
  • 詳細については、 、単一値コンテキストでの複数の値、および Go 関数でマップのような 'ok' 値を返すことに関する関連する質問を参照してください。

以上がGo で複数の戻り値を可変引数関数に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。