Go語言的參數只能是值傳遞
#值傳遞是一個拷貝的過程
Go:值傳遞
func bbb(list [4]int){ for i,_ := range list{ list[i] = 0 } } func main(){ list := [4]int{1,2,3,4} bbb(list) fmt.Println(list ) //[1 2 3 4] }
Javascript: 引用傳遞
let list = [1,2,3,4] function bbb(list){ list.forEach((item,index)=>{ list[index] = 0 }) } bbb(list) console.log(list) //[0,0,0,0]
但是Go語言可以透過指標來實現引用傳遞的作用
func bbb(p2 *[4]int){ //接受一个[4]int的指针 for i,_ := range p2{ p2[i] = 0 } } func main(){ list := [4]int{1,2,3,4} p := &list bbb(p) //传递指针 fmt.Println(list ) //[0 0 0 0] }
既然說go語言的參數傳遞只能是值傳遞,所以這裡其實是把指標位址拷貝了一份,而兩個位址都指向了main函數的變數list的位址,所以才讓list的值發生了改變
更多相關知識請關注go語言教學欄位
以上是go語言值傳遞介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!