布尔类型是Go语言中最基本的数据类型之一,用于表示逻辑值。下面详细介绍Go语言中的布尔类型。
1. 基本概念
Go语言中的布尔类型用关键字bool
表示,它只有两个预定义的常量值:
Go
true // 真
false // 假
2. 声明布尔变量
javascript
var b1 bool // 默认值为false
var b2 bool = true // 显式初始化
b3 := false // 短变量声明
3. 布尔类型的零值
布尔类型的零值是false
:
javascript
var b bool
fmt.Println(b) // 输出: false
4. 布尔运算
Go语言提供了以下布尔运算符:
4.1. 逻辑运算符
- 逻辑与
&&
(AND)
javascript
true && true // true
true && false // false
- 逻辑或
||
(OR)
javascript
true || false // true
false || false // false
- 逻辑非
!
(NOT)
javascript
!true // false
!false // true
4.2. 比较运算符
比较运算符通常返回布尔值:
javascript
5 == 5 // true
5 != 5 // false
5 > 3 // true
5 < 3 // false
5 >= 5 // true
5 <= 3 // false
5. 布尔类型的转换
Go语言是强类型语言,布尔类型不能隐式转换为其他类型,也不能将其他类型隐式转换为布尔类型。
javascript
i := 1
if i { // 编译错误:非布尔条件
// ...
}
// 必须显式比较
if i != 0 {
// ...
}
6. 布尔值的使用场景
- 条件语句
javascript
if condition {
// ...
}
- 循环控制
javascript
for condition {
// ...
}
- 函数返回值
javascript
func isEven(n int) bool {
return n%2 == 0
}
- 结构体字段
javascript
type Person struct {
Name string
Adult bool
}
7. 注意事项
-
Go语言中布尔值只有
true
和false
,不像某些语言可以用0/1或其它值表示; -
布尔类型占用1个字节内存空间;
-
布尔值不能参与数值运算,也不能转换为数值;
-
在需要布尔值的地方必须使用布尔表达式,不能使用其他类型的值;
8. 示例代码
Go
package main
import "fmt"
func main() {
// 布尔变量声明
var a bool = true
b := false
fmt.Println("a:", a, "b:", b)
// 逻辑运算
fmt.Println("a && b:", a && b)
fmt.Println("a || b:", a || b)
fmt.Println("!a:", !a)
// 比较运算
x, y := 10, 20
fmt.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
}
输出:
javascript
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