go语言随手记 -- go语言定位于高并发服务端程序
1.基本数据类型
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名 // 表示一个 Unicode 码点 java的char
float32 float64
complex64 complex128
2.基本数据结构 List and Map
go语言中只有数组(定长)和切片(不定长,有容量)
go语言支持map
3.面向对象 struct interface function
go语言认为:封装、继承和多态,对于面向对象来讲都是多余的,所以它通过检查是否实现接口interface的方法function来判定对象是否可以互相赋值。
struct定义结构体,function定义方法,如果这个function恰好和interface的function定义一样,就认为其实现了该interface。典型的如:Error和Print都是接口,但你不用声明,直接实现方法即可用
function是go语言的一等公民,它支持一次返回多个值,这是和很多语言不一样的。
方法可见性:go抛弃了public、private等关键字和概念,只看function的首字母,大写就表示public
4.指针和引用 * and &
*T 是指向 T 类型值的指针。其零值为 nil。
var p *int
& 操作符会生成一个指向其操作数的指针。
i := 42
p = &i
* 操作符表示指针指向的底层值。
fmt.Println(*p) // 通过指针 p 读取 i
*p = 21 // 通过指针 p 设置 i
5.Go程 Goroutine 名字来自Coroutine
当需要启动一个独立协程执行代码时,代码块前面加上go即可
6.并发和互斥锁 channel select and mutex
当发生并发争抢资源时,go推荐的模式是:要通讯,不要共享变量。
所以它提供了channel作为协程通讯的通道。(当channel需要switch的时候,用select关键字)
8.其实还有一些细节,但你完全可以在深入使用的时候再处理。现在这些已经足够用了