值传递&引用传递

你也喜欢&留留Lmiao

不为一段关系消磨和损耗,无论爱是多么值得歌颂的美德,都不值得你为此变成另一个人。答应我,要留住灵气,轻盈,要随时可以独自一人,暗夜里走路回家心里还哼着歌。答应我,要善待自己。 by 吕彦妮

引用于:http://wufazhuce.com/one/1383

按值传递(call by value) 按引用传递(call by reference)

Go 默认使用按值传递来传递参数,也就是传递参数的副本。

参数类型 默认传递形式 初始化形式
切片(slice) 引用传递 make([]type, len, cap)
字典(map) 引用传递 make(map[key_type]value_type)
接口(interface) 引用传递
通道(channel) 引用传递
数组([len]type) 值传递
结构体(struct) 值传递
整形 值传递
浮点型 值传递
字符串 值传递

new & make 区别

new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为T的内存地址:这种方法返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体( 等同于&T{} )

make(T)返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:切片、map 和 channel

换言之,new 函数分配内存,make 函数初始化。

值传递&引用传递_第1张图片
new与make的区别

你可能感兴趣的:(值传递&引用传递)