首先,百度云是一个非常好用的网盘,因为之前限速是在限得太过于厉害,无法忍受,在网上找了很多工具,其中就有BaiduPCS-Go,不得不说特别的好用,之前在此基础上,我添加了一个同步文件夹的功能,感觉代码挺简陋的,所以我也不好意思PR,这里主要是我想把项目中一些可以复用的函数给抽取出来,以便我日后翻阅吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Trigger 用于触发事件
func Trigger(f func()) {
if f == nil {
return
}
go f()
}

// TriggerOnSync 用于触发事件, 同步触发
func TriggerOnSync(f func()) {
if f == nil {
return
}
f()
}

delay是利用了channel的阻塞性质,以及关闭channel后,接受channel语句会获取数据,不再阻塞,这也就达到了delay的作用。(直接使用定时器也没啥毛病)

1
2
3
4
5
6
7
8
9
10
11
// NewDelayChan 发送延时信号
func NewDelayChan(t time.Duration) <-chan struct{} {
c := make(chan struct{})
go func() {
time.Sleep(t)
close(c)
}()
return c
}

// <-delayChan