ホームページ  >  記事  >  バックエンド開発  >  Go で複数の戻り値を 1 つの関数から別の関数に渡すにはどうすればよいですか?

Go で複数の戻り値を 1 つの関数から別の関数に渡すにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 03:23:27793ブラウズ

How to Pass Multiple Return Values from One Function to Another in Go?

関数の戻り値を入力として別の関数に渡す

Go では、1 つの関数の戻り値を入力引数として便利に渡すことができます。別の機能。例:

<code class="go">func returnIntAndString() (i int, s string) {...}
func doSomething(i int, s string) {...}

doSomething(returnIntAndString())</code>

ただし、2 番目の関数に追加の引数を追加すると、複雑な問題が発生します。

<code class="go">func doSomething(msg string, i int, s string) {...}
doSomething("message", returnIntAndString()) // Error</code>

エラー メッセージは、複数の戻り値を関数に渡すことができないことを示します単一の引数を期待しています。

解決策

Go 仕様に従って、関数は、後者が正確な引数を期待している場合にのみ、その戻り値を入力引数として別の関数に渡すことができます。引数の数も同じです。このシナリオには追加のパラメーターを渡すメカニズムがありません。

したがって、問題を解決するには、次の 2 つのオプションがあります:

  1. 戻り値を別の変数に割り当てる: returnIntAndString() の戻り値を個々の変数に割り当て、引数として doSomething() に渡します。
  2. 可変引数を受け入れる関数を使用します: 追加の引数を渡す必要がある場合では、以下の例に示すように、可変長引数を受け入れる関数を定義できます。
<code class="go">func doSomethingVariadic(msg string, args ...interface{}) {
  // Code to handle variable number of arguments
}</code>

その後、returnIntAndString() の戻り値を含む必要な引数を指定してこの関数を呼び出すことができます。

<code class="go">doSomethingVariadic("message", returnIntAndString())</code>

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

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