# 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" ) ```
## Index - [Bool](#Bool) - [And](#And) - [Or](#Or) - [Xor](#Generate) - [Nor](#Nor) - [Nand](#Nand) - [TernaryOperator](#TernaryOperator)
## 目录 ### Bool

返回传入参数的bool值.
如果出入类型参数含有Bool方法, 会调用该方法并返回
如果传入类型参数有IsZero方法, 返回IsZero方法返回值的取反
slices和map的length大于0时,返回true,否则返回false
其他类型会判断是否是零值

函数签名: ```go func Bool[T any](value T) bool ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { // bool fmt.Println(condition.Bool(false)) // false fmt.Println(condition.Bool(true)) // true // integer fmt.Println(condition.Bool(0)) // false fmt.Println(condition.Bool(1)) // true // float fmt.Println(condition.Bool(0.0)) // false fmt.Println(condition.Bool(0.1)) // true // string fmt.Println(condition.Bool("")) // false fmt.Println(condition.Bool(" ")) // true fmt.Println(condition.Bool("0")) // true // slice var nums [2]int fmt.Println(condition.Bool(nums)) // false nums = [2]int{0, 1} fmt.Println(condition.Bool(nums)) // true // map fmt.Println(condition.Bool(map[string]string{})) // false fmt.Println(condition.Bool(map[string]string{"a": "a"})) // true // struct fmt.Println(condition.Bool(struct{}{})) // false fmt.Println(condition.Bool(time.Now())) // true } ``` ### And

逻辑且操作,当切仅当a和b都为true时返回true

函数签名: ```go func And[T, U any](a T, b U) bool ``` 例子: ```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 ``` 例子: ```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 ``` 例子: ```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 ``` 例子: ```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)) // true } ``` ### Nand

如果a和b都为真,返回false,否则返回true

函数签名: ```go func Nand[T, U any](a T, b U) bool ``` 例子: ```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 ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/condition" ) func main() { trueValue := "1" falseValue := "0" fmt.Println(condition.TernaryOperator(true, trueValue, falseValue)) // "1" } ```