GO语言程序设计学习 1

  1. 如果要修改 receiver, 必须将其设为一个指针, 指针是指保存了另一个值得内存地址的变量, 原因之一是为了效率, 比如我们有一个很大的值, 传入一个指向该值所在内存地址的指针会比传入该值本身更廉价得多;

  2. channel map slice 等数据结构必须通过 make 函数创建, 而 make 函数返回的是该类型的一个引用, 引用的行为和指针非常类似, 当把它们传入函数的时候, 函数内对该引用所做的任何改变都会作用到该引用所指向的原始数据;

  3. 通常情况下 Go 语言的变量持有相应的值, 可以将一个变量想象成它所持有的值来使用,期中有些例外是对于通道,函数,方法,映射,以及切片的引用变量, 他们持有的都是引用, 也即保存指针的变量

  4. 与 C 和 C++ 不同, Go语言的数组是按值传递的, 因此传递一个大数组的带价非常大, 幸运的是, 在 GO 语言中数组不常用到,因为我们可以用切片来代替, 与字符串不同, 修改切片不会导致写时复制的负担, 因为不同于字符串的是, 切片是可变的