首頁  >  文章  >  後端開發  >  如何將多個返回值作為參數傳遞給 Go 中的另一個函數?

如何將多個返回值作為參數傳遞給 Go 中的另一個函數?

Linda Hamilton
Linda Hamilton原創
2024-10-31 08:49:02465瀏覽

How to Pass Multiple Return Values as Arguments to Another Function in Go?

如何使用一個函數的返回值作為另一個函數的輸入參數

問題:

考慮兩個函數,returnIntAndString 和doSomething。 returnIntAndString 傳回兩個值,一個整數和一個字串,而 doSomething 接受三個參數:一個字串、一個整數和另一個字串。

以returnIntAndString 的回傳值作為參數呼叫doSomething 時,會出現以下錯誤:

main.go:45: multiple-value returnIntAndString() in single-value context
main.go:45: not enough arguments in call to doSomething()

答案:

根據Go 規範,函數呼叫只有在下列情況下才可以將另一個函數的回傳值綁定到被呼叫函數的參數:

  • 第一個函數的回傳值數量等於第二個函數的參數數。
  • 傳回值的型別可指派給參數的型別。

在這種情況下,returnIntAndString 傳回兩個值,但 doSomething 需要第三個參數。因此,這種直接呼叫是不允許的。

替代方案:

有兩種替代方案:

  1. 包裝回傳值結構體中的值:

建立一個結構體來保存returnIntAndString 的回傳值,並將該結構體的實例傳遞給doSomething。

<code class="go">type ReturnValues struct {
    I int
    S string
}

func returnIntAndString() ReturnValues {
    return ReturnValues{42, "Hello"}
}

func doSomething(msg string, values ReturnValues) {
    // Use values.I and values.S as needed
}

doSomething("Message", returnIntAndString())</code>
  1. 將回傳值指派給單獨的變數:

將returnIntAndString 的回傳值傳遞給命名變數並將這些變數傳遞給命名變數給doSomething。

<code class="go">var i, s = returnIntAndString()
doSomething("Message", i, s)</code>

以上是如何將多個返回值作為參數傳遞給 Go 中的另一個函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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