高效附加到可變參數函數包裝器
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中文網其他相關文章!