Go語言中所有的傳參都是值傳遞(傳值),都是一個副本,一個拷貝。因為拷貝的內容有時候是非引用類型(int、string、struct等這些),這樣就在函數中就無法修改原內容數據;有的是引用類型(指針、map、slice、chan等這些),這樣就可以修改原內容數據。
是否可以修改原內容數據,和傳值、傳引用沒有必然的關系。在C++中,傳引用肯定是可以修改原內容數據的,在Go語言里,雖然只有傳值,但是我們也可以修改原內容數據,因為參數是引用類型。
這里也要記住,引用類型和傳引用是兩個概念。
再記住,Go里只有傳值(值傳遞)。