Go中何時函數參數按值傳遞?

Go中何時函數參數按值傳遞?git

C語言系列的全部語言,函數的參數老是按值傳遞也就是說函數總能獲得參數的副本,就像有一個賦值語句將值分配給參數意義。github

其實指針傳遞也是賦值一個指針的副本,不是他指向的數據。因此你能在函數裏面經過指針改變數據的值就是這個緣由。由於指針是一個指向數據的地址,副本仍是這個地址。golang

有兩個比較特殊的數據結構就是 Map 和 Slice。它們的行爲和指針很像,它們包含一個指向基礎數據的一個指針,能夠查看深刻理解 Slice。因此 Map 和 Slice 做爲參數的時候,不會複製他們所指向的數據,並且在函數中能夠直接改變數據。數據結構

若是函數的參數是一個 interface ,interface 值包含 struct 將會複製整個 struct,若是包含的是指針,那也不會拷貝指針指向的數據。函數

參考:When are function parameters passed by value?指針

更多內容,歡迎關注個人Githubblog

相關文章
相關標籤/搜索