Go 语言布尔型 (bool)

发布于: 2020-11-12 10:05:00 作者: 犬小哈 最后修订时间: 2020-11-13 10:18:22

在 Go 语言中,以关键字 bool 来声明布尔类型。布尔类型只有 truefalse 两种值。

iffor 语句的条件部分都是布尔类型的值,并且 ==< 等比较操作也会产生布尔型的值。一元操作符!对应逻辑非操作,因此!true的值为false,更罗嗦的说法是(!true==false)==true,虽然表达方式不一样,不过我们一般会采用简洁的布尔表达式,就像用 x 来表示x==true

布尔值可以和 &&(AND)||(OR)操作符结合,并且有短路行为:如果运算符左边值已经可以确定整个布尔表达式的值,那么运算符右边的值将不再被求值,因此下面的表达式总是安全的:

s != "" && s[0] == 'x' // 其中s[0]操作如果应用于空字符串将会导致panic异常。

因为&&的优先级比||高(PS:&&对应逻辑乘法,||对应逻辑加法,乘法比加法优先级要高),下面形式的布尔表达式是不需要加小括弧的:

if 'a' <= c && c <= 'z' ||
    'A' <= c && c <= 'Z' ||
    '0' <= c && c <= '9' {
    // ...ASCII letter or digit...
}

关于布尔型类型转换

Go 语言中布尔类型无法参与数值运算,也无法与其他类型进行转换

package main

import "fmt"

func main()  {
	var a bool
	fmt.Print(int(a) * 2) // 将变量 a 强制转换为 int 类型,并乘以 2
}

运行上面的代码,会发生编译错误:

cannot convert a (type bool) to type int // 无法将 bool 类型转换为 int 类型

图示:

运行go语言布尔类型代码