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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 09:51:01216ブラウズ

How to Pass Multiple Return Values as Arguments to Functions in Go?

複数引数関数の引数として値を返す

複数の値を返す関数を扱う場合、これらの値を入力として使用することができます他の関数への引数。ただし、受信関数に追加のパラメーターがある場合は、特定の制限が適用されます。

次のコードを考えてみましょう。

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

func doSomething(msg string, i int, s string) {...}</code>

returnIntAndString() の戻り値を doSomething() に直接渡そうとした場合:

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

Go は次のエラーで不平を言います:

multiple-value returnIntAndString() in single-value context
not enough arguments in call to doSomething()

これは、Go では関数の戻り値が関数の引数として単一の値しか渡せないためです。前の関数では複数の値が生成されます。

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

  1. 戻り値の割り当て:
    戻り値の割り当て値を一時変数に追加し、個別に doSomething() に渡します。

    <code class="go">i, s := returnIntAndString()
    doSomething("message", i, s)</code>
  2. 特定の値を返す:
    returnIntAndString() 関数で、各値のフィールドを持つ名前付き構造体。次に、構造体を doSomething() に渡します。

    <code class="go">type Result struct {
       I int
       S string
    }
    
    func returnIntAndString() Result {...}
    
    res := returnIntAndString()
    doSomething("message", res.I, res.S)</code>

Go 固有のルールでは、引数を割り当てるときに複数値の戻り値関数と一緒にパラメーターを追加することは許可されていません。言語仕様に概説されている特定の条件が満たされていない場合は、提供されている解決策のいずれかを採用する必要があります。

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

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