Go 语言布尔型 (bool)

更新时间 2022-03-31 14:47:18

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书活动

目前, 星球 内第一个项目:全栈前后端分离博客项目,演示地址:http://116.62.199.48/, 1.0 版本已经更新完毕,正在更新 2.0 版本。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 224 小节,累计 35w+ 字,讲解图:1544 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 1000+ 小伙伴加入,欢迎点击围观

在 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语言布尔类型代码运行go语言布尔类型代码