go中的值类型和引用类型
值类型
和其他语言类似,go语言中的基本数据类型如整型,浮点数,字符串等都是值传递,数组也是值传递
引用类型
go语言中的引用类型有六种,slice(切片)、map(字典)、channel(管道)、interface(接口)、func(函数)、pointer(指针)
- slice
func main(){
var data=make([]int ,2)
fmt.Println(data)
option(data)
fmt.Println(data)
}
func option(data []int){
data[0]=10
}
结果:
[0 0]
[10 0]
- map
func main(){
var data=make(map[string]interface{})
data["key"]="old"
fmt.Println(data)
option(data)
fmt.Println(data)
}
func option(data map[string]interface{}){
data["key"]="new"
}
结果:
map[key:old]
map[key:new]
3.channel
func main(){
var data=make(chan int )
fmt.Println(fmt.Sprintf("%p",data))
option(data)
}
func option(c chan int){
fmt.Println(fmt.Sprintf("%p",c))
}
结果:
0xc00009a000
0xc00009a000