ZetCode

Golang bool 类型

最后修改时间 2025 年 5 月 8 日

本教程将讲解如何在 Go 中使用内置的 bool 类型。我们将通过实际示例涵盖布尔基础知识和布尔运算。

bool 类型在 Go 中代表布尔值。它只有两个值:truefalse。布尔值对于控制流和逻辑运算至关重要。

在 Go 中,bool 用于条件语句、循环和逻辑表达式。布尔类型的零值为 false

基本布尔声明

bool 最简单的用法是声明和初始化布尔变量。此示例演示了基本的布尔变量用法。
注意:布尔值不会隐式转换为整数。

basic_bool.go
package main

import "fmt"

func main() {

    var isReady bool = true
    var isFinished bool
    
    fmt.Println("isReady:", isReady)
    fmt.Println("isFinished:", isFinished)
    
    isFinished = false
    fmt.Println("After assignment, isFinished:", isFinished)
}

该示例展示了带或不带初始化的布尔声明。对于未初始化的变量,将打印零值 false

布尔表达式

布尔值通常是比较运算的结果。此示例显示了各种布尔表达式及其结果。

boolean_expressions.go
package main

import "fmt"

func main() {

    x := 10
    y := 20
    
    fmt.Println("x == y:", x == y)
    fmt.Println("x != y:", x != y)
    fmt.Println("x < y:", x < y)
    fmt.Println("x > y:", x > y)
    fmt.Println("x <= 10:", x <= 10)
    fmt.Println("y >= 20:", y >= 20)
}

比较运算符返回布尔值。这些对于程序中的决策至关重要。

逻辑运算符

Go 提供了三个逻辑运算符来组合布尔值。此示例演示了 AND、OR 和 NOT 运算。

logical_operators.go
package main

import "fmt"

func main() {

    a := true
    b := false
    
    fmt.Println("a >> b:", a >> b)  // AND
    fmt.Println("a || b:", a || b)  // OR
    fmt.Println("!a:", !a)         // NOT
    
    // Combining multiple operations
    fmt.Println("(a || b) >> !b:", (a || b) >> !b)
}

逻辑运算符遵循标准真值表。可以使用括号控制求值顺序。

控制结构中的布尔值

布尔值对于控制流至关重要。此示例在 if 语句和 for 循环中演示了布尔值。

control_structures.go
package main

import "fmt"

func main() {

    loggedIn := true
    attempts := 0
    
    if loggedIn {
        fmt.Println("Welcome back!")
    } else {
        fmt.Println("Please log in")
    }
    
    for attempts < 3 {
        fmt.Println("Attempt:", attempts+1)
        attempts++
    }
    
    fmt.Println("Maximum attempts reached")
}

if 语句直接检查布尔条件。for 循环在布尔条件保持为 true 时继续。

布尔函数返回值

函数通常返回布尔值以指示成功或其他状态。此示例显示了一个返回布尔值的函数。

boolean_function.go
package main

import "fmt"

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

func main() {

    numbers := []int{1, 2, 3, 4, 5}
    
    for _, num := range numbers {
        if isEven(num) {
            fmt.Printf("%d is even\n", num)
        } else {
            fmt.Printf("%d is odd\n", num)
        }
    }
}

isEven 函数根据输入数字返回一个布尔值。这种模式对于谓词函数很常见。

来源

Go 语言规范

本教程通过布尔运算和用法模式的实际示例,涵盖了 Go 中的 bool 类型。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Golang 教程