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语言函数传递问题(map、切片、接口、chan)
276-go语言golang面试题知识点
Golang channel 使用指南
Golang基础--常见坑
基于类型系统的面向对象编程语言Go
go语言并发编程
go语言语法自我总结
2018年最全Go语言教程零基础入门到进阶实战视频
想系统学习GO语言(Golang
Golang精编面试题 -- 选择题