3 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
[]int和[5]int這兩種表達(dá)方式在Go語言里有根本性的區(qū)別。[]int不是數(shù)組,而是數(shù)組切片(slice),而[5]int是一個(gè)數(shù)組。在Go語言中,數(shù)組是值類型,而數(shù)組切片是引用類型。
值類型變量在函數(shù)調(diào)用時(shí)的參數(shù)傳遞中會(huì)被完整拷貝一次變量?jī)?nèi)容,之后函數(shù)內(nèi)操作的只是這個(gè)拷貝的副本。這是第32頁例子中所表現(xiàn)出來的,函數(shù)內(nèi)對(duì)數(shù)組的修改不會(huì)影響函數(shù)外的原始數(shù)組內(nèi)容的原因。一般而言,參數(shù)類型會(huì)選擇數(shù)組切片而非數(shù)組,以避免拷貝所導(dǎo)致的性能損耗。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
第一種是數(shù)組,go中數(shù)組是值類型
第二種是slice,是引用,不過 array := []int{1,2,3,4,5},也會(huì)產(chǎn)生一個(gè)匿名的數(shù)組。

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
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 關(guān)注
- 181 瀏覽
添加回答
舉報(bào)