3 回答
TA貢獻2051條經(jīng)驗 獲得超10個贊
[]int和[5]int這兩種表達方式在Go語言里有根本性的區(qū)別。[]int不是數(shù)組,而是數(shù)組切片(slice),而[5]int是一個數(shù)組。在Go語言中,數(shù)組是值類型,而數(shù)組切片是引用類型。
值類型變量在函數(shù)調(diào)用時的參數(shù)傳遞中會被完整拷貝一次變量內(nèi)容,之后函數(shù)內(nèi)操作的只是這個拷貝的副本。這是第32頁例子中所表現(xiàn)出來的,函數(shù)內(nèi)對數(shù)組的修改不會影響函數(shù)外的原始數(shù)組內(nèi)容的原因。一般而言,參數(shù)類型會選擇數(shù)組切片而非數(shù)組,以避免拷貝所導致的性能損耗。
TA貢獻1798條經(jīng)驗 獲得超3個贊
第一種是數(shù)組,go中數(shù)組是值類型
第二種是slice,是引用,不過 array := []int{1,2,3,4,5},也會產(chǎn)生一個匿名的數(shù)組。
TA貢獻1786條經(jīng)驗 獲得超13個贊
package main
import "fmt"
func modify(array []int) {
array[0] = 10
fmt.Println("In modify(), array values:", array)
}
func main() {
array := [5]int{1,2,3,4,5}
modify(array[0:])
fmt.Println("In main(), array values:", array)
}
- 3 回答
- 0 關注
- 206 瀏覽
添加回答
舉報
