day5 boolean
parent
340bf90010
commit
426ab21720
|
@ -0,0 +1,46 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// 一个布尔类型的值只有两种:true和false。
|
||||||
|
// if和for语句的条件部分都是布尔类型的值,
|
||||||
|
// 并且==和<等比较操作也会产生布尔型的值。
|
||||||
|
// 一元操作符!对应逻辑非操作,因此!true的值为false
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// 布尔值可以和&&(AND)和||(OR)操作符结合,并且有短路行为:
|
||||||
|
// 如果运算符左边值已经可以确定整个布尔表达式的值,
|
||||||
|
// 那么运算符右边的值将不再被求值。
|
||||||
|
var bool1 bool = true
|
||||||
|
// 再遇到第一个false时,此语句以及判断为假,不需要再判断bool1的值
|
||||||
|
bool1 = false && bool1 // false
|
||||||
|
fmt.Println(bool1)
|
||||||
|
// 同理||也是一样的,当遇到一个true时语句以及判断为真,不需要判断后半段的值
|
||||||
|
bool1 = true || bool1 // true
|
||||||
|
fmt.Println(bool1)
|
||||||
|
|
||||||
|
// 布尔值并不会隐式转换为数字值0或1,反之亦然。必须使用一个显式的if语句辅助转换:
|
||||||
|
i := 0
|
||||||
|
b := true
|
||||||
|
if b {
|
||||||
|
i = 1
|
||||||
|
}
|
||||||
|
fmt.Println(i)
|
||||||
|
|
||||||
|
// 可以选择将其包装成一个函数
|
||||||
|
// btoi returns 1 if b is true and 0 if false.
|
||||||
|
bToi := func(b bool) int {
|
||||||
|
if b {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
fmt.Println(bToi(false)) // 0
|
||||||
|
|
||||||
|
// 数字到bool也可以转换
|
||||||
|
// itob reports whether i is non-zero.
|
||||||
|
iTob := func(i int) bool { return i != 0 }
|
||||||
|
fmt.Println(iTob(1314)) // true
|
||||||
|
fmt.Println(iTob(0)) // false
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue