返回值作為多參數函數的參數
處理傳回多個值的函數時,可以使用這些值作為輸入其他函數的參數。但是,當接收函數有附加參數時,會受到某些限制。
考慮以下程式碼:
<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 只允許將單一值作為參數傳遞給函數,即使函數的傳回值上一個函數產生多個值。
要解決此問題,您有兩個選擇:
分配回傳值:
分配傳回值值到臨時變數並將它們單獨傳遞給doSomething()。
<code class="go">i, s := returnIntAndString() doSomething("message", i, s)</code>
傳回特定值:
在 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中文網其他相關文章!