golang相关代码注意点

1. ticker的使用

如果使用

c := time.Tick(1 * time.Nanosecond)

的情况,注意ticker是一个length=1的chan。因此如果tick的间隔时间过短,例如图中所示,则会在获取chan之后,chan又被写入下一个触发的element。如果代码只是想触发一次,代码中使用c.reset试图调整ticker的下次触发时间,但是因为存在chan又被写入下一个触发的element的情况,会导致该chan被触发两次,不符合预期的情况。

因此建议还是每次都直接new出一个新的tick,不要使用ticker.reset方法

2. 

type xxx string

const(

Test 1 xxx = "test1"

Test2 = "test2"

)

注意此时Test2的类型是string,而不是xxx。这会导致在一些比较的地方,和预期不符。

c := make(chan xxx,100)

select {

case x:=<- c:

        if x == Test2{

}

}

注意此时就是存在x == Test2的比较,两者类型都不一样,肯定不等。这里注意

你可能感兴趣的:(golang,开发语言,后端)