首頁  >  文章  >  後端開發  >  如何將多個返回值作為參數傳遞給 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 只允許將單一值作為參數傳遞給函數,即使函數的傳回值上一個函數產生多個值。

要解決此問題,您有兩個選擇:

  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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn