go語言函式傳遞問題(map、切片、介面、chan)
阿新 • • 發佈:2018-12-17
一句話總結: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) }