Aumujun:代码如下,目的是为了同时下载很多台交换机的配置,sws 里有多组业务的交换机,每个业务的每一台配置的下载我都要同时进行,下面的代码是我拍脑袋写下来的,目的达到了,但怎么看都不顺眼,我的 go 水平目前实在有限,求助各位指导一下。
func (s *swbka) downloadSwitchCfg(sws map[string]mulparam) {
wgp := sync.WaitGroup{}
wgp.Add(len(sws))
for secN, mulP := range sws {
go func(secName string, mulP mulparam) {
if _, err := os.Stat(secName); os.IsNotExist(err) {
err := os.Mkdir(secName, 0644)
if err != nil {
logrus.Fatal(err)
}
}
wg := sync.WaitGroup{}
wg.Add(len(mulP.profiles))
for _, profile := range mulP.profiles {
go func(sn string, pf param) {
err := s.downloadFile(sn, pf)
if err != nil {
logrus.Errorln(err)
}
wg.Done()
}(secName, profile)
}
wg.Wait()
wgp.Done()
}(secN, mulP)
}
wgp.Wait()
}
Go 中怎么实现类似 Java 里的枚举类型?woostundy:用定义常量来实现枚举类型,太简易了。没法通过值找到枚举名称,没法约束值范围,没法输出所有可选枚举值。 试过在自定义类型上面加 String(), All() 方法,但代码又多又丑陋。 有什么好的写法或者第三方包能实现吗?scnace:code generation (逃 lbp0200:直接复制粘贴了type Direction intc…
请问有什么比较火,并且好用的 go 的 job 调度框架吗?secretName:由于公司技术栈的原因,所以现在打算在 go 里面找一个 job 调度框架。 找了一圈,只发现 gocron 貌似还可以的样子,但是调度只支持 shell 与 http,连异步任务都没有,我这里常用的任务有时候调度时间通常都在好几小时,这样显然是满足不了要求的。 难道只能自己造一个轮子了吗?sirius1024:robfig/cron
go 有没有什么优雅的办法可以进行单元测试?pkoukk:刚刚入坑 golang 没多久,用 go 写了一个小的项目,逐渐感受到了 go 的特性和优点 为了增加项目的可靠性,想写一点单元测试,但是发现了重重阻碍,主要是在 mock 的时候实在是太复杂了 个人体验上感觉,无法做到无侵入性的 mock 某些 func 或者 struct 。 下面写一下自己的做法,不知道是因为我原本代码结构设计的就不对还是…
Go Pro 和 Insta360 以及大疆 osmo action 选哪个?GeekSky:用来拍 Vlog 的。Xusually:Go Pro Lunaleeguo:Go Pro 最强,大疆的性价比高,而且前面有屏幕,推荐大疆 GeekSky:@Xusually @Lunaleeguo 我的潜意识是选择 Go Pro,PDD 的价格好便宜啊,不知道靠不靠谱…… Xusually:@GeekSky 还是 GoPro 吧,我自己用黑狗…
alpine 的争议plko345:还在用 Alpine 作为你 Docker 的 Python 开发基础镜像?其实 Ubuntu 更好一点 这篇文章的观点认为 alpine 存在不少缺陷abowloflrf:Python 在安装依赖的时候经常会对各种库有要求,甚至有的还会需要有 gcc,所以 Python 的基础镜像不用 alpine 没问题。但是对 Go 来说,CGO 关掉…