Golang 神秘的數組修改:切片與數組
與C 中數組本質上是透過引用傳遞的不同,Go 的行為似乎
與C 中數組本質上是透過引用傳遞的不同,Go 的行為似乎是矛盾的。為了理解這個明顯的悖論,讓我們深入研究 Golang 切片的世界。 當在 Go 中聲明數組而不指定固定長度時,它們就會變成切片。這些切片只是指向底層數組的一部分的描述符。當傳遞給函數時,僅複製標頭(指向第一個元素、長度和容量的指標)。 因此,對函數中切片所做的任何修改都會直接影響原始切片。這是因為它們都引用相同的底層數組。這種行為類似於 C 中的按引用傳遞機制,儘管數組本身在 Go 中沒有明確按引用傳遞。 總而言之,Go 的差異源自於陣列和切片之間的差異。數組按值傳遞,而切片則透過對底層數組的參考傳遞。對於切片,函數中所做的任何更改都會反映在原始切片中。深入了解切片的進一步閱讀:
相關問題參考:
以上是Go 的陣列修改行為與 C 有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!