ITPub博客

首页 > 应用开发 > Go语言 > golang复习-golang插件化检查

golang复习-golang插件化检查

原创 Go语言 作者:风尘_NULL 时间:2025-10-02 16:59:08 0 删除 编辑

func pluginCheck(plugins *Plugins) (bool, string) {

// plugins.GetPluginNumber()获取插件的数量

infoChan := make(chan PluginMessage, plugins.GetPluginNumber())

errChan := make(chan error, 1)

done := make(chan bool, 1)

wg := sync.WaitGroup{}

//并发执行插件中的检查

for name, plugin := range plugins.PluginMap {

wg.Add(1)

go func(plugin PluginChecker, name string) {

defer wg.Done()

//插件的方法

ok, reson, err := plugin.DoCheck()

if err != nil {

errChan <- err

return

}

infoChan <- PluginMessage{

PluginName: name,

GoodCheck: ok,

Message: reson,

}

}(plugin, name)

}

go func() {

wg.Wait()

close(infoChan)

close(done)

}()

select {

case <-done:

for info := range infoChan {

if !info.GoodCheck {

return info.GoodCheck, info.Message

}

}

 

case err := <-errChan:

return false, err.Error()

}

return true, ""

}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30221425/viewspace-3097006/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: git详细用法
请登录后发表评论 登录
全部评论
腾讯科技(深圳)有限公司 DBA

注册时间:2015-04-24

  • 博文量
    76
  • 访问量
    238210