我一直在尝试让我的第一个“go 例程”运行的示例,当我让它运行时,它不会按照 go 文档中规定的带有 timer.Reset() 函数的方式工作。
就我而言,我相信我这样做的方式很好,因为我实际上并不关心 chan 缓冲区中有什么(如果有的话)。这样做的目的是,case <-tmr.C:如果发生任何事情,就会触发case _, ok := <-watcher.Events:,然后一切都会安静至少一秒钟。这样做的原因是,case _, ok := <-watcher.Events:事件的间隔可能是一到几十微秒,我只关心它们全部完成并且事情再次稳定下来。
然而我担心按照文档所说的“必须做”的方式做是行不通的。如果我知道做得更好,我会说文档是有缺陷的,因为它假设缓冲区中有东西,而实际上可能没有,但我不知道做得足够好,有信心做出这样的决定,所以我希望一些专家出来那里可以启发我。
下面是代码。我还没有把它放在操场上,因为我必须做一些清理(删除对程序其他部分的调用),并且我不确定如何让它对文件系统更改做出反应以显示它的工作。
我已经在代码中清楚地标记了哪些替代方案有效,哪些无效。
慕少森
HUWWW
饮歌长啸
随时随地看视频慕课网APP
相关分类