首頁 > 後端開發 > Golang > 如何將多個 Go 函數傳回值傳遞給可變參數函數?

如何將多個 Go 函數傳回值傳遞給可變參數函數?

Susan Sarandon
發布: 2024-12-09 08:55:06
原創
1028 人瀏覽過

How to Pass Multiple Go Function Return Values to a Variadic Function?

如何在 Go 中將多個回傳值傳遞給可變參數函數?

背景:
Go 函數可以傳回多個值,但是標準可變參數函數呼叫不允許直接傳遞這些值。本文探討了一種使用自訂包裝函數來實現此目的的方法。

問題:
考慮一個傳回兩個整數值的函數:

func temp() (int, int) {
    return 1, 1
}
登入後複製

我們想要將這些回傳值傳遞給可變參數 Printf函數以使用字串列印它們格式:

fmt.Printf("first= %d and second = %d", temp()) // Error
登入後複製

解決方案:

1.直接方法(不支援):
標準函數呼叫語法不支援將多個返回值傳遞給可變參數函數。這是因為可變參數必須是函數簽章中的最後一個參數。

2.包裝回傳值:
我們可以建立一個包裝函數,將任何函數的回傳值轉換為 []interface{} 切片。然後,可變參數 Printf 函數可以接受此切片作為其參數。

func wrap(vs ...interface{}) []interface{} {
    return vs
}
登入後複製

用法:
使用 wrap 函數,我們現在可以將 temp函數的回傳值傳遞給Printf:

fmt.Printf("first= %d and second = %d", wrap(temp()...)...)
登入後複製

附加註意:

  • 此技術可用於將多個回傳值傳遞給Go 中的任何可變參數函數。
  • fmt.Println 函數也可用於列印多個回傳值直接取值,但不支援字串格式化。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板