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的比较,两者类型都不一样,肯定不等。这里注意