Go 语言布尔型 (bool)
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观
在 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 类型
图示: