首頁  >  文章  >  後端開發  >  如何有效地將參數附加到 Go 中的可變參數函數包裝器?

如何有效地將參數附加到 Go 中的可變參數函數包裝器?

Patricia Arquette
Patricia Arquette原創
2024-11-02 01:29:02441瀏覽

How to Efficiently Append Arguments to a Variadic Function Wrapper in Go?

高效附加到可變參數函數包裝器

Go 中的可變參數函數,例如fmt.Println,讓您可以傳遞可變數量的參數。但是,當使用包裝函數進行偵錯時,附加附加參數可能會導致記憶體分配問題。

在提供的範例中,前兩次嘗試使用附加參數擴充 fmt.Fprintln 函數會導致錯誤。第三種方法涉及手動建構一個新切片,這會帶來開銷。

為了避免記憶體重新分配,您可以使用追加函數:

<code class="go">func Debug(a ...interface{}) {
    if debug {
        fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...)...)
    }
}</code>

這個單行函數採用現有的切片參數(a) 並使用附加功能將其擴展為附加項(前綴和sep)。然後將產生的切片傳遞給 fmt.Fprintln,確保高效的參數擴展,而無需明確記憶體分配。

以上是如何有效地將參數附加到 Go 中的可變參數函數包裝器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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