如何使用一個函數的返回值作為另一個函數的輸入參數
問題:
考慮兩個函數,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 需要第三個參數。因此,這種直接呼叫是不允許的。
替代方案:
有兩種替代方案:
建立一個結構體來保存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>
將returnIntAndString 的回傳值傳遞給命名變數並將這些變數傳遞給命名變數給doSomething。
<code class="go">var i, s = returnIntAndString() doSomething("Message", i, s)</code>
以上是如何將多個返回值作為參數傳遞給 Go 中的另一個函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!