玩golang的一定要看看
每日一库:lo《操作map、slice等,我觉得是功能比较多的库》
每日一库:cast《类型转换的神器》
cast.ToString("mayonegg")
cast.ToString(8)
cast.ToString(8.31)
cast.ToString([]byte("one time"))
cast.ToString(nil)
var foo interface{} = "one more time"
cast.ToString(foo)

每日一库:copier《A类型赋值到B类型神器》
- 从一个字段复制到同名字段
- 从方法复制到同名字段
- 从字段复制到具有相同名称的方法
- 从一个切片复制到另一个切片
- 从结构体复制到切片
- 从map复制到map
- 强制复制带有标签的字段
- 忽略带标签的字段
- 深拷贝
- GitHub地址:github.com/jinzhu/copi…
var (
user = User{Name: "Jinzhu", Age: 18, Role: "Admin", Salary: 200000}
employees = []Employee{}
)
copier.Copy(&employee, &user)
每日一库:conc《控制并发的神器》
简化了并发操作控制
func main() {
var wg conc.WaitGroup
wg.Go(doSomethingThatMightPanic)
wg.Wait()
}
控制并发数量为10
func process(stream chan int) {
p := pool.New().WithMaxGoroutines(10)
for elem := range stream {
elem := elem
p.Go(func() {
handle(elem)
})
}
p.Wait()
}
每日一库:threading《go-zero中的控制并发和安全的协程》
安全的协程使用
threading.GoSafe(func() {
})
协程的并发数量控制
func process(stream chan int) {
wg := sync.WaitGroup{}
task := threading.NewTaskRunner(10)
for elem := range stream {
wg.Add(1)
elem := elem
task.Schedule(func() {
defer wg.Done()
handle(elem)
})
}
wg.Wait()
}
每日一库:excelize《excel使用》
每日一库:godotenv《加载环境变量》
每日一库:yaml《解析yaml配置文件》
configPath := rootDir + "/config/application" + mode + ".yaml"
yamlFile, err := os.ReadFile(configPath)
if err != nil {
log.Panicf("Failed to read file , cause is %s", err.Error())
}
config := config.Config{}
err = yaml.Unmarshal(yamlFile, &config)
global.CONFIG = config
if err != nil {
fmt.Println(err.Error())
}
持续更新中……