当前位置: 首页 > news >正文

Go语言中的布尔类型详解

布尔类型是Go语言中最基本的数据类型之一,用于表示逻辑值。下面详细介绍Go语言中的布尔类型。

1. 基本概念

Go语言中的布尔类型用关键字bool表示,它只有两个预定义的常量值:

true  // 真
false // 假

2. 声明布尔变量

var b1 bool           // 默认值为false
var b2 bool = true    // 显式初始化
b3 := false           // 短变量声明

3. 布尔类型的零值

布尔类型的零值是false

var b boolfmt.Println(b) // 输出: false

4. 布尔运算

Go语言提供了以下布尔运算符:

4.1. 逻辑运算符

1. 逻辑与 && (AND)

true && true   // true
true && false  // false

2. 逻辑或 || (OR)

true || false  // true
false || false // false

3. 逻辑非 ! (NOT)

!true  // false
!false // true

4.2. 比较运算符

比较运算符通常返回布尔值:

5 == 5  // true
5 != 5  // false
5 > 3   // true
5 < 3   // false
5 >= 5  // true
5 <= 3  // false

5. 布尔类型的转换

Go语言是强类型语言,布尔类型不能隐式转换为其他类型,也不能将其他类型隐式转换为布尔类型。

i := 1
if i { // 编译错误:非布尔条件// ...
}// 必须显式比较
if i != 0 {// ...
}

6. 布尔值的使用场景

1. 条件语句

if condition {// ...
}

2. 循环控制

for condition {// ...
}

3. 函数返回值

func isEven(n int) bool {return n%2 == 0
}

4. 结构体字段

type Person struct {Name stringAdult bool
}

7. 注意事项

1. Go语言中布尔值只有truefalse,不像某些语言可以用0/1或其它值表示;

2. 布尔类型占用1个字节内存空间;

3. 布尔值不能参与数值运算,也不能转换为数值;

4. 在需要布尔值的地方必须使用布尔表达式,不能使用其他类型的值;

8. 示例代码

package mainimport "fmt"func main() {// 布尔变量声明var a bool = trueb := falsefmt.Println("a:", a, "b:", b)// 逻辑运算fmt.Println("a && b:", a && b)fmt.Println("a || b:", a || b)fmt.Println("!a:", !a)// 比较运算x, y := 10, 20fmt.Println("x == y:", x == y)fmt.Println("x < y:", x < y)// 条件语句if x < y {fmt.Println("x is less than y")}// 函数返回布尔值fmt.Println("Is 5 even?", isEven(5))
}func isEven(n int) bool {return n%2 == 0
}

 输出:

a: true b: false
a && b: false
a || b: true
!a: false
x == y: false
x < y: true
x is less than y
Is 5 even? false

http://www.xdnf.cn/news/744265.html

相关文章:

  • 截面动量策略思路
  • 内存管理 : 04段页结合的实际内存管理
  • Muduo网络库重点技术详解
  • tomcat服务器以及接受请求参数的方式
  • Java网络编程实战:TCP/UDP Socket通信详解与高并发服务器设计
  • uniapp uni-id Error: Invalid password secret
  • Linux531rsync定时同步 再回忆
  • 智能测试新范式:GenAI 与 Playwright MCP 如何重塑 QA 流程
  • 【Ubuntu】摸鱼技巧之虚拟机环境复制
  • C#WinForm程序时方法很多时Form.cs文件会很长,如何分别写入多个文件,partial class的作用体现出来了。
  • 矩阵快速幂算法快速上手
  • 极大似然估计例题——正态分布的极大似然估计
  • 尚硅谷redis7 99 springboot整合redis之连接集群
  • AppTrace 视角下 App 一键拉起:提升应用转化率的高效方案​
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第四部分)
  • 自动驾驶系列—Monocular 3D Lane Detection for Autonomous Driving
  • 【Web API系列】WebTransportSendStream接口深度解析:构建高性能实时数据传输的基石
  • Python实现P-PSO优化算法优化循环神经网络LSTM分类模型项目实战
  • 【技能拾遗】——家庭宽带单线复用布线与配置(移动2025版)
  • 【网络与信息安全】实验三 RSA加解密与签名验证
  • 澄清 STM32 NVIC 中断优先级
  • [网页五子棋][对战模块]实现游戏房间页面,服务器开发(创建落子请求/响应对象)
  • 中文NLP with fastai - Fastai Part4
  • 新视角!经济学顶刊QJE用文本分析探究新技术扩散
  • 简单cnn
  • go|channel源码分析
  • c# 如何中的 ? 与 ??
  • “粽”览全局:分布式系统架构与实践深度解析(端午特别版)
  • 《信号与系统》第 5 章 离散时间傅里叶变换
  • 2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版