布尔数据类型(‘bool’)可以是两个值之一,无论是 true还是 false.布尔数据在编程中被用来进行比较和控制程序的流程。
布尔代表了与数学的逻辑分支有关的真理价值,该分支信息计算机科学中的算法. 以数学家乔治布尔的名字命名,布尔词总是以一个资本化的B
开始。
Go for Boolean 中的数据类型为bool
,全部为 lowercase. 值true
和false
将始终分别为 lowercaset
和f
,因为它们是 Go 中的特殊值。
本教程将涵盖您需要了解bool
数据类型的基本知识,包括布尔比较、逻辑运算符和真理表。
运营商比较
在编程中, _comparison 运算符用于比较值并评估到一个单一的 Boolean 值,无论是 true 还是 false。
下表显示了布尔比较运算器。
Operator | What it means |
---|---|
== | Equal to |
!= | Not equal to |
< | Less than |
> | Greater than |
<= | Less than or equal to |
>= | Greater than or equal to |
要了解这些运算符是如何工作的,让我们在Go程序中分配两个整数到两个变量:
1x := 5
2y := 8
在本示例中,由于x
具有5
的值,所以它比y
具有8
的值更小。
使用这两个变量及其相关值,让我们从前面的表中查看操作员. 在此程序中,您将要求Go打印每个比较操作员是否评估为真或假。
1package main
2
3import "fmt"
4
5func main() {
6 x := 5
7 y := 8
8
9 fmt.Println("x == y:", x == y)
10 fmt.Println("x != y:", x != y)
11 fmt.Println("x < y:", x < y)
12 fmt.Println("x > y:", x > y)
13 fmt.Println("x <= y:", x <= y)
14 fmt.Println("x >= y:", x >= y)
15}
1[secondary_label Output]
2x == y: false
3x != y: true
4x < y: true
5x > y: false
6x <= y: true
7x >= y: false
按照数学逻辑,Go从表达式中评估了以下几点:
- 5(
x
)等于8(y
)? false - 5不等于8吗? true
- 5不等于8吗? true
- 5不等于8吗? false
- 5不等于8吗? true
- 5不等于8吗? false
虽然这里使用了整数,但您可以用浮动值代替它们。
字符串也可以与布尔操作员一起使用,除非您使用额外的字符串方法,否则它们是案例敏感的。
你可以看看如何在实践中比较字符串:
1Sammy := "Sammy"
2sammy := "sammy"
3
4fmt.Println("Sammy == sammy: ", Sammy == sammy)
1[secondary_label Output]
2Sammy == sammy: false
字符串Sammy
不等于字符串sammy
,因为它们并不完全相同;一个字符串从上方字符串S
开始,另一个字符串从下方字符串s
开始。
1Sammy := "Sammy"
2sammy := "sammy"
3alsoSammy := "Sammy"
4
5fmt.Println("Sammy == sammy: ", Sammy == sammy)
6fmt.Println("Sammy == alsoSammy", Sammy == alsoSammy)
1[secondary_label Output]
2Sammy == sammy: false
3Sammy == alsoSammy true
您还可以使用其他比较运算符(包括>
和<
)来比较两个字符串,Go 将使用字符的 ASCII 值对这些字符串进行语法比较。
您还可以使用比较运算器来评估布尔值:
1t := true
2f := false
3
4fmt.Println("t != f: ", t != f)
1[secondary_label Output]
2t != f: true
前一代码块评估了真
不等于假
。
请注意两个运算符=
和==
之间的差异。
1x = y // Sets x equal to y
2x == y // Evaluates whether x is equal to y
第一个 =
是分配运算符,它会设置一个值等于另一个值;第二个, ==
,是比较运算符,它会评估两个值是否等同。
逻辑操作员
它们将表达式评估到布尔值,返回真实
或错误
。 这些操作员是&&
,``和!
,并在下面的列表中定义:
- && (
x && y
) 是and
运算符,如果两种说法都是真的 - annoo (
xumailumail y
) 是or
运算符,如果至少有一种说法是真的 - ! (
!x
) 是no
运算符,但如果说法是假的 是真的。
逻辑运算器通常用于评估两个或多个表达式是否是真实的或不真实的,例如,它们可以用来确定评级是否通过,学生是否在课程中注册,如果两种情况都是真实的,那么学生将在系统中获得评级。
要了解逻辑操作器是如何工作的,让我们评估三个表达式:
1fmt.Println((9 > 7) && (2 < 4)) // Both original expressions are true
2fmt.Println((8 == 8) || (6 != 6)) // One original expression is true
3fmt.Println(!(3 <= 1)) // The original expression is false
1[secondary_label Output]
2true
3true
4true
在第一个情况下, fmt.Println((9 > 7) && (2 < 4))
,无论是 9 > 7
还是 2 < 4
都需要评估为 true,因为使用了 and
运算符。
在第二个案例中, fmt.Println((8 == 8) Mediateca (6!= 6))
,因为 8 == 8
被评估为 true,它没有影响到 6!= 6
被评估为 false,因为使用了 or
操作员。
在第三个例子中,‘fmt.Println(!(3 <= 1)’),‘不’运算符否定了‘3 <=1’返回的错误值。
让我们用整数代替浮点,并瞄准错误的评估:
1fmt.Println((-0.2 > 1.4) && (0.8 < 3.1)) // One original expression is false
2fmt.Println((7.5 == 8.9) || (9.2 != 9.2)) // Both original expressions are false
3fmt.Println(!(-5.7 <= 0.3)) // The original expression is true
在这个例子中:
and
必须至少有一个错误的表达式评估为错误或
必须两个表达式评估为错误!
必须其内部表达式为真,以便新的表达式评估为错误
如果这些结果对你来说似乎不清楚,请通过一些(#truth-tables)以进一步澄清。
您还可以使用&&
、``和!
来写化合物语句:
1!((-0.2 > 1.4) && ((0.8 < 3.1) || (0.1 == 0.1)))
首先来看看最内在的表达式: (0.8 < 3.1)annoo (0.1 == 0.1)
. 这个表达式评估为 true
,因为两个数学陈述都是 true
。
接下来,Go 将返回的值true
并将其与下一个内部表达式相结合:(-0.2 > 1.4) && (true)
此示例返回false
,因为数学陈述-0.2 > 1.4
是 false,并且(false
和true
)返回false
。
最后,我们有外部表达式: !(false)
,该表达式评估为 'true',因此如果我们打印此表达式,最终返回的值是:
1[secondary_label Output]
2true
逻辑运算符&&
,``和!
评估表达式并返回布尔值。
真理桌面
有很多关于数学逻辑分支的知识,但你可以选择性地学习一些,以提高你的算法思维在编程时。
以下是对比运算符 ==
的真相表,以及每个逻辑运算符 &&
, Átha Cliath
和 !
. 虽然您可能能够推理它们,但还可以有帮助地记住它们,因为这可以使您的编程决策过程更快。
《真理之桌》
x | == | y | Returns |
---|---|---|---|
true | == | true | true |
true | == | false | false |
false | == | true | false |
false | == | false | true |
&&
(和)真相桌
x | and | y | Returns |
---|---|---|---|
true | and | true | true |
true | and | false | false |
false | and | true | false |
false | and | false | false |
《真理的桌子》《真理的桌子》
x | or | y | Returns |
---|---|---|---|
true | or | true | true |
true | or | false | true |
false | or | true | true |
false | or | false | false |
《真相桌子》
not | x | Returns | |
---|---|---|---|
not | true | false | |
not | false | true |
真理表是逻辑中常用的数学表,在计算机编程中构建算法(指令)时有用。
使用布尔运算器来控制流量
若要以流量控制语句的形式控制程序的流量和结果,可以使用 condition 然后是 clause。
一个 condition 评估到一个 Boolean 值为 true 或 false,呈现一个在程序中作出决定的点,也就是说,一个条件会告诉你是否某事物评估为 true 或 false。
clause 是跟随 condition 并决定程序的结果的代码块,也就是说,它是构建的做这个
部分如果
x是
真`,那么做这个。
下面的代码块显示了与条件陈述并行工作的比较操作员的例子,以控制Go程序的流程:
1if grade >= 65 { // Condition
2 fmt.Println("Passing grade") // Clause
3} else {
4 fmt.Println("Failing grade")
5}
这个程序将评估每个学生的分数是否通过或失败.在一个学生的分数为83
的情况下,第一个陈述将被评估为真实
,并触发了过渡级
的印刷陈述。
布尔运算器提供条件,可以通过流量控制陈述来决定程序的最终结果。
结论
本教程通过了属于布尔式类型的比较和逻辑操作员,以及真理表,并使用布尔语用于程序流量控制。