GolangStudy/src/study/day5/bool.go

47 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}