网站主机一个g,太原公司网站开发,2019一个网站开发要多少钱,网页版whatsapp怎么下载samber/lo 库的使用方法#xff1a; condition
samber/lo 是一个 Go 语言库#xff0c;使用泛型实现了一些常用的操作函数#xff0c;如 Filter、Map 和 FilterMap。汇总目录页面
这个库函数太多#xff0c;因此我决定按照功能分别介绍#xff0c;本文介绍的是 samber/l…samber/lo 库的使用方法 condition
samber/lo 是一个 Go 语言库使用泛型实现了一些常用的操作函数如 Filter、Map 和 FilterMap。汇总目录页面
这个库函数太多因此我决定按照功能分别介绍本文介绍的是 samber/lo 库中条件相关的函数。
Ternary
三元运算符 第一个参数是条件如果为真则返回第二个参数否则返回第三个参数。
result : lo.Ternary(true, a, b)
// aresult : lo.Ternary(false, a, b)
// b[play]
TernaryF
和 Ternary 类似但是第二个和第三个参数是函数。
result : lo.TernaryF(true, func() string { return a }, func() string { return b })
// aresult : lo.TernaryF(false, func() string { return a }, func() string { return b })
// b对于避免在初始化时进行nil指针解引用或避免运行不必要的代码很有用。
var s *stringsomeStr : TernaryF(s nil, func() string { return uuid.New().String() }, func() string { return *s })
// ef782193-c30c-4e2e-a7ae-f8ab5e125e02[play]
If / ElseIf / Else
链式条件判断返回第一个为真的值。
result : lo.If(true, 1).ElseIf(false, 2).Else(3)
// 1result : lo.If(false, 1).ElseIf(true, 2).Else(3)
// 2result : lo.If(false, 1).ElseIf(false, 2).Else(3)
// 3使用lo.IfF等函数时 第二个参数是函数
result : lo.IfF(true, func () int {return 1}).ElseIfF(false, func () int {return 2}).ElseF(func () int {return 3})
// 1也可以混合使用
result : lo.IfF(true, func () int {return 1}).Else(42)
// 1[play]
Switch / Case / Default
链式Switch语句返回第一个匹配的值。
result : lo.Switch(1).Case(1, 1).Case(2, 2).Default(3)
// 1result : lo.Switch(2).Case(1, 1).Case(2, 2).Default(3)
// 2result : lo.Switch(42).Case(1, 1).Case(2, 2).Default(3)
// 3或者使用回调函数
result : lo.Switch(1).CaseF(1, func() string {return 1}).CaseF(2, func() string {return 2}).DefaultF(func() string {return 3})
// 1混用
result : lo.Switch(1).CaseF(1, func() string {return 1}).Default(42)
// 1[play]