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)
}
 
  





你可能感兴趣的:(go)