1. 程式人生 > >go語言函式傳遞問題(map、切片、介面、chan)

go語言函式傳遞問題(map、切片、介面、chan)

一句話總結:map、切片、介面、函式型別、chan都是引用型別,作為函式引數傳遞不會複製一個副本。

package main import (     "fmt" ) func change(a int) {     a = 10 } func changeMap(m map[int]string) {     _, ok := m[1]     if ok {         m[1] = "jack"     } } func changeSlice(s []int) {     s[0] = 10 } func changeChan(ch chan int) {     ch <- 99 } func main() {     key := 10     change(key)     fmt.Println(key)     m := make(map[int]string)     m[1] = "may"     changeMap(m)     fmt.Println(m)     s := []int{1, 2, 3}     changeSlice(s)     fmt.Println(s)     ch := make(chan int, 3)     changeChan(ch)     fmt.Println(<-ch)     close(ch) }