在提供的程式碼片段中,使用 make() 函數建立通道 c 並將其傳遞給 sum 函數。問題出現了:即使沒有建立明確指針,Go 中的通道是否透過引用隱式傳遞?
答案在於 make() 的獨特行為。從技術上講,通道是被複製的,因為 make() 在堆上分配內存,在幕後創建一個指針。然而,這個指標類型並沒有公開,類似於引用類型。
根據Go 規範:
「內建函數make 接受型別T,該型別必須是切片,映射或通道類型,可選地後跟特定於類型的表達式列表。它傳回T類型的值(不是*T)。因此,它可以在不複製底層資料的情況下進行傳遞。
總之,當使用 make 建立時,Go 中的通道實際上是透過引用傳遞的。這適用於其他資料結構,例如切片、映射、指標和函數。另一方面,原始資料類型(數字、布林值)和可變結構在傳遞給函數時會複製。
以上是Go 中的通道是透過引用傳遞的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!