记录一些go使用过程中的一些小技巧。

context

context的使用也有一定负面影响,比如会创建过多的对象。

struct with sync.Mutex

如果你的结构体包含sync.Mutex属性,或者内嵌了sync.Mutex,那么这个struct的函数receiver应该定义为指针类型,以防函数调用复制了sync.Mutex发送非预期的影响。

package main

import "fmt"
import "sync"
import "time"

type tMutext struct {
	sync.Mutex
}

func (t tMutext) LOne() {
	t.Lock()
	defer t.Unlock()
	time.Sleep(time.Second)
}

func (t tMutext) LTwo() {
	t.Lock()
	defer t.Unlock()
	time.Sleep(time.Second)
}

func main() {
	m := tMutext{}
	m.Lock()
	m.LOne()
	fmt.Println("vim-go")
}

简化函数名称

当一个package的函数返回值是pkg.Pkg,*pkg.Pkg,函数名可以省略类型名而不会让用户困惑。