Golang way

Go 入门

一直听说 Go 是天生支持并发编程的, 于是磨刀霍霍向牛羊, 入坑。

开始

特点

  • Go 语言可以进行隐式定义, 但是不存在隐式类型转换。
  • 所有的内存在 Go 中都经过初始化的。
  • 变量的命名使用陀峰法,首个单词小写,每个新单词首字母大写。如果需要全局变量能够被外包所使用, 则首字母也需要大写。

基本类型和运算符

  • 两个类型相同的值可以使用 == 或者 != 来比较。不同类型的值不可以比较。
  • Go 支持 整形和浮点型数字, 并且原生支持复数, 其中位的运算采用补码。int 是最快的类型, 尽量使用 float64。
    • 号和指针名称间留有一个空格,以防止被误认为是乘法表达式。 用在一个指针前面时,将得到这个指针指向地址所存储的值;这就是反引用(间接引用)操作符, 也可以称为指针转移。指针的高级应用是可以传递一个变量的应用(如函数的参数), 如此不会传递变量的拷贝。注意: 在 Go 中不允许像 C 中的 pointer++ 的指针算法。
  • 特殊的流程控制, select 结构用于 channel 的选择。可省掉判断条件里面的小括号。必要时使用小括号提高优先级。 switch 可以接受的 case 判断可以是统一类型的任何类型的值或者表达式。而 for 可以在循环体内同时使用多个计数器。

精华的 goroutine 和 channel

goroutine 是 Go 程序并发的执行体, channel 是它们之间的连接, 是可以让一个 goroutine 发送特征值到另一个 goroutine 的通信机制.没一个 channel 是一个具体类型的导管,叫做通道的元素类型.channel 的创建使用 make. channel 有两个操作, send, receive 统称通信.使用上古神奇的符号 <-.close(ch) 关闭 channel, make()可以创建两种通道, 带正数的第二个参数的是缓冲通道,其他的是非缓冲通道.

参考来源