Go 语言布尔型 (bool)
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动
目前,正在
星球
内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.2 + Vite 4
,手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 144 小节,累计 22w+ 字,讲解图:923 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 440+ 小伙伴加入,欢迎点击围观
。
在 Go 语言中,以关键字 bool
来声明布尔类型。布尔类型只有 true
和 false
两种值。
if
和 for
语句的条件部分都是布尔类型的值,并且 ==
和 <
等比较操作也会产生布尔型的值。一元操作符!
对应逻辑非操作,因此!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语言布尔类型代码