Go 语言布尔型 (bool)

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

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

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