首次提交:初始化项目代码

This commit is contained in:
sunct
2026-07-31 15:18:32 +08:00
commit d6393266b0
193 changed files with 14287 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
package main
import (
"fmt"
"sync"
"time"
)
var (
dbConfig string // 需要初始化的配置
once sync.Once // 单例执行工具
initErr error // 存储初始化错误(通过闭包传递)
wg3 sync.WaitGroup
)
// 初始化配置(可能失败)
func initConfig() error {
fmt.Println("开始初始化配置...")
time.Sleep(1 * time.Second) // 模拟耗时
// 模拟初始化失败(可注释此行测试成功场景)
//return errors.New("配置文件不存在")
dbConfig = "db:localhost:3306"
return nil
}
// 获取配置(触发初始化)
func getConfig(workerID int) {
defer wg3.Done()
once.Do(func() {
initErr = initConfig() // 错误通过闭包捕获
})
if initErr != nil {
fmt.Printf("工作者%d: 配置初始化失败: %v\n", workerID, initErr)
return
}
fmt.Printf("工作者%d: 获取配置=%s\n", workerID, dbConfig)
}
func main() {
// 5个goroutine同时尝试获取配置(触发初始化)
for i := 0; i < 5; i++ {
wg3.Add(1)
go getConfig(i)
}
wg3.Wait()
}