Golang编程技巧
数组、切片、字符串截取
截取的新变量与就变量共用一个数组结构,不需要额外分配。
1 | a := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9} |
使用`创建避免转义
使用字节数组或缓冲区可以提升字符串连接的速度
在 Go 语言中字符串是只读的,这表示每次当你使用 str = str + "something"
时,实际上创建了一个新的字符串对象。如果你寻求代码的最高效率,这里应该使用字节缓冲区来替代,例如:
1 | str := "something" |
显式标识结构实现的接口
- 直观表现实现的接口
- 编译时候能够检查是否有遗漏实现
- 接口方法变化后也能很快地检查出来
1 | type VolumePlugin interface { |
空结构体的妙用
空结构体struct{}
占用0的空间。在只作为信号通知的通道中,可以定义空结构体的通道
1 | ch := make(chan struct{}) |
Sets实现
golang的基本数据结构中并没有Set结构,但是可以使用map来实现。
1 | type HashSet map[interface{}]bool |
http打桩
httptest包中提供了HTTP的桩函数。
1 | testServer := httptest.NewServer(&fakeHandler) |