Archive: 2016/6

Go基于Sublime的开发环境搭建

作为一个Go语言新手,趁手的开发工具是必须的 :) 本文简单记录一下自己搭建Go开发环境的过程 安装sublime text2/3配置Package Control安装gosublime包 通过Package Control安装 手动安装安装gocode用于实现代码自动提示12go get github.com/nsf/gocodego install github.com/nsf/gocode

Go性能优化技巧

字符串(string)和字节数组(slice, [ ]byte)转换时需付出 “沉重” 代价。在对性能有要求或者操作频繁的地方使用如下形式:123456789101112import ( "strings" "unsafe")func str2bytes(s string) []byte { x:= (*[2]uintprt)(unsafe.Pointer(&s)) h:= [3

Goroutine的调度器

在了解Go的运行时的scheduler之前,需要先了解为什么需要它,因为我们可能会想,OS内核不是已经有一个线程scheduler了嘛?熟悉POSIX API的人都知道,POSIX的方案在很大程度上是对Unix process进场模型的一个逻辑描述和扩展,两者有很多相似的地方。 Thread有自己的信号掩码,CPU affinity等。但是很多特征对于Go程序来说都是累赘。 尤其是context上

golang中的包

golang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应。 go的package不局限于一个文件,可以由多个文件组成。 组成一个package的多个文件,编译后实际上和一个文件类似,组成包的不同文件相互之间可以直接引用变量和函数,不论是否导出 因此,组成包的多个文件中不能有相同的全局变量和函数(这里有一个例外就是包的初始化函数:init函数,下面还有讨论) go不要求pa