不为一段关系消磨和损耗,无论爱是多么值得歌颂的美德,都不值得你为此变成另一个人。答应我,要留住灵气,轻盈,要随时可以独自一人,暗夜里走路回家心里还哼着歌。答应我,要善待自己。 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 函数初始化。