# Condition condition包含一些用于条件判断的函数。这个包的实现参考了carlmjohnson的truthy包的实现,更多有用的信息可以在[truthy](https://github.com/carlmjohnson/truthy)中找到,感谢carlmjohnson。
## 源码: - [https://github.com/duke-git/lancet/blob/main/condition/condition.go](https://github.com/duke-git/lancet/blob/main/condition/condition.go) ## 用法: ```go import ( "github.com/duke-git/lancet/v2/condition" ) ``` ## 目录 - [Bool](#Bool) - [And](#And) - [Or](#Or) - [Xor](#Generate) - [Nor](#Nor) - [Xnor](#Xnor) - [Nand](#Nand) - [TernaryOperator](#TernaryOperator) ## 文档 ### Bool返回传入参数的bool值.
如果出入类型参数含有Bool方法, 会调用该方法并返回
如果传入类型参数有IsZero方法, 返回IsZero方法返回值的取反
slices和map的length大于0时,返回true,否则返回false
其他类型会判断是否是零值
逻辑且操作,当切仅当a和b都为true时返回true
函数签名: ```go func And[T, U any](a T, b U) bool ``` 示例:[运行](https://go.dev/play/p/W1SSUmt6pvr) ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { fmt.Println(condition.And(0, 1)) // false fmt.Println(condition.And(0, "")) // false fmt.Println(condition.And(0, "0")) // false fmt.Println(condition.And(1, "0")) // true } ``` ### Or逻辑或操作,当切仅当a和b都为false时返回false
函数签名: ```go func Or[T, U any](a T, b U) bool ``` 示例:[运行](https://go.dev/play/p/UlQTxHaeEkq) ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { fmt.Println(condition.Or(0, "")) // false fmt.Println(condition.Or(0, 1)) // true fmt.Println(condition.Or(0, "0")) // true fmt.Println(condition.Or(1, "0")) // true } ``` ### Xor逻辑异或操作,a和b相同返回false,a和b不相同返回true
函数签名: ```go func Xor[T, U any](a T, b U) bool ``` 示例:[运行](https://go.dev/play/p/gObZrW7ZbG8) ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { fmt.Println(condition.Xor(0, 0)) // false fmt.Println(condition.Xor(0, 1)) // true fmt.Println(condition.Xor(1, 0)) // true fmt.Println(condition.Xor(1, 1)) // false } ``` ### Nor异或的取反操作
函数签名: ```go func Nor[T, U any](a T, b U) bool ``` 示例:[运行](https://go.dev/play/p/g2j08F_zZky) ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { fmt.Println(condition.Nor(0, 0)) // true fmt.Println(condition.Nor(0, 1)) // false fmt.Println(condition.Nor(1, 0)) // false fmt.Println(condition.Nor(1, 1)) // false } ``` ### Xnor如果a和b都是真的或a和b均是假的,则返回true。
函数签名: ```go func Xnor[T, U any](a T, b U) bool ``` 示例:[运行](https://go.dev/play/p/OuDB9g51643) ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { fmt.Println(condition.Xnor(0, 0)) // true fmt.Println(condition.Xnor(0, 1)) // false fmt.Println(condition.Xnor(1, 0)) // false fmt.Println(condition.Xnor(1, 1)) // true } ``` ### Nand如果a和b都为真,返回false,否则返回true
函数签名: ```go func Nand[T, U any](a T, b U) bool ``` 示例:[运行](https://go.dev/play/p/vSRMLxLIbq8) ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { fmt.Println(condition.Nand(0, 0)) // true fmt.Println(condition.Nand(0, 1)) // true fmt.Println(condition.Nand(1, 0)) // true fmt.Println(condition.Nand(1, 1)) // false } ``` ### TernaryOperator三元运算符
函数签名: ```go func TernaryOperator[T, U any](isTrue T, ifValue U, elseValue U) U ``` 示例:[运行](https://go.dev/play/p/ElllPZY0guT) ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { conditionTrue := 2 > 1 result1 := condition.TernaryOperator(conditionTrue, 0, 1) conditionFalse := 2 > 3 result2 := condition.TernaryOperator(conditionFalse, 0, 1) fmt.Println(result1) fmt.Println(result2) // Output: // 0 // 1 } ```