[不懂就问] 请问这段 go 代码该如何优化

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 关掉…