邯郸网站只做,安徽建设工程信息网监理查询,公司企业网站搭建,海口免费网站建设布尔数据类型(bool)可以是两个值之一#xff0c;true或false。布尔值在编程中用于比较和控制程序流程。
布尔值表示与数学逻辑分支相关的真值#xff0c;它指示计算机科学中的算法。布尔(Boolean)一词以数学家乔治布尔(George Boole)命名#xff0c;总是以大写字母B开头。 …布尔数据类型(bool)可以是两个值之一true或false。布尔值在编程中用于比较和控制程序流程。
布尔值表示与数学逻辑分支相关的真值它指示计算机科学中的算法。布尔(Boolean)一词以数学家乔治·布尔(George Boole)命名总是以大写字母B开头。
Go中表示布尔值的数据类型是bool全部小写。值true和false将始终分别是小写的t和f因为它们在Go中是特殊值。
本教程将涵盖你需要了解bool数据类型如何工作的基础知识包括布尔比较、逻辑运算符和真值表。
比较运算符
在编程中比较运算符用于比较值并求值为单个布尔值true或false。
下表展示了布尔比较操作符。
操作符含义等于!不等于小于大于小于等于大于等于
为了理解这些操作符是如何工作的让我们在Go程序中将两个整数赋值给两个变量:
x : 5
y : 8在这个例子中因为x的值是5所以它小于y的值是8。
使用这两个变量及其关联的值我们来遍历前一个表中的操作符。在这个程序中你要让Go打印出每个比较运算符的计算结果是true还是false。为了更好地理解这个输出你还需要Go打印一个字符串显示它正在求值:
package mainimport fmtfunc main() {x : 5y : 8fmt.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 y:, x y)fmt.Println(x y:, x y)
}Outputx y: false
x ! y: true
x y: true
x y: false
x y: true
x y: false按照数学逻辑Go从表达式中计算了以下内容:
5 (x)等于8 (y)吗?false5不等于8吗?true5小于8吗?true5大于8吗?false5小于或等于8吗?true5不小于等于8吗?false
虽然这里使用整数但也可以用浮点值替换。
字符串也可以与布尔操作符一起使用。除非使用额外的字符串方法否则它们是区分大小写的。
你可以看看如何在实践中比较字符串:
sammy : Sammy
sammy : sammyfmt.Println(Sammy sammy: , Sammy sammy)OutputSammy sammy: false字符串Sammy不等于字符串Sammy因为它们并不完全相同一个以大写字母S开头另一个以小写字母S开头。但是如果你添加另一个变量并将其赋值给Sammy那么它们将计算为相等:
sammy : Sammy
sammy : sammy
alsoSammy : Sammyfmt.Println(Sammy sammy: , Sammy sammy)
fmt.Println(Sammy alsoSammy, Sammy alsoSammy)OutputSammy sammy: false
Sammy alsoSammy true你也可以使用其他比较操作符包括和来比较两个字符串。Go将使用字符的ASCII值按字典顺序比较这些字符串。
你也可以使用比较操作符计算布尔值:
t : true
f : falsefmt.Println(t ! f: , t ! f)Outputt ! f: true上述代码块计算出true不等于false。
注意和这两个操作符之间的区别。
x y //设x y
x y // 计算x是否等于y第一个是赋值操作符它将一个值设置为另一个值。第二个是比较运算符用于判断两个值是否相等。
逻辑运算符
有两个用于比较值的逻辑运算符。它们将表达式求值为布尔值返回true或false。这些运算符是、||和!定义如下: (x y)是and操作符。如果两个陈述都为真它为真。|| (x || y)是or运算符。如果至少有一个陈述为真则为真。! (!x)是not操作符。只有当命题为假时它才为真。
逻辑运算符通常用于判断两个或多个表达式是否为真。例如它们可以用来确定成绩是否通过以及学生是否注册了这门课如果两种情况都为真那么该学生将在系统中被分配一个分数。另一个例子是根据用户是否有商店积分或在过去6个月内是否进行过购买来确定用户是否为在线商店的有效活跃客户。
为了理解逻辑运算符的工作原理让我们计算三个表达式:
fmt.Println((9 7) (2 4)) // Both original expressions are true
fmt.Println((8 8) || (6 ! 6)) // One original expression is true
fmt.Println(!(3 1)) // The original expression is falseOutputtrue
true
true在第一种情况下fmt.Println((9 7) (2 4)) 9 7和2 4都需要求值为true因为使用了and操作符。
在第二个例子中fmt.Println((8 8) ||(6 ! 6))由于8 8被求值为true因此6 ! 6被求值为false没有任何区别因为使用了or操作符。如果你使用and操作符结果将为false。
在第三种情况下fmt.Println(!(3 1)) not运算符会否定3 1返回的false值。
让我们用浮点数代替整数并针对错误求值:
fmt.Println((-0.2 1.4) (0.8 3.1)) // One original expression is false
fmt.Println((7.5 8.9) || (9.2 ! 9.2)) // Both original expressions are false
fmt.Println(!(-5.7 0.3)) // The original expression is true在这个例子中:
and必须至少有一个false表达式的结果为false。or的两个表达式都必须为false。!必须使其内部表达式为true才能使新表达式的计算结果为false。
如果这些结果对你来说不清楚请浏览一些[真值表]以进一步澄清。
你也可以使用、||和!:
!((-0.2 1.4) ((0.8 3.1) || (0.1 0.1)))先看一下最里面的表情:(0.8 3.1) || (0.1 0.1)。这个表达式求值为true因为两个数学表达式都是true。
接下来Go将返回值true与下一个内部表达式相结合:(-0.2 1.4) (true)。这个例子返回false因为数学语句-0.2 1.4为false并且(false)和(true)返回false。
最后我们有一个外部表达式:!(false)它的计算结果为true所以如果我们打印这条语句最终的返回值是:
Outputtrue逻辑运算符、||和!计算表达式并返回布尔值。
真值表
数学的逻辑分支有很多东西需要学习但你可以有选择地学习其中的一些以提高编程时的算法思维。
下面是比较运算符以及每个逻辑运算符、||和!的真值表。虽然你可能能够推理出它们但记住它们也是有帮助的因为这可以使你的编程决策过程更快。 (equal) 真值表
xy返回truetruetruetruefalsefalsefalsetruefalsefalsefalsetrue (and) 真值表
xandy返回trueandtruetruetrueandfalsefalsefalseandtruefalsefalseandfalsefalse
|| (or) 真值表
xory返回trueortruetruetrueorfalsetruefalseortruetruefalseorfalsefalse
! (not) 真值表
| not | x | 返回 | | — | — | — | — | | not | true | false | | not | false | true |
真值表是逻辑中常见的数学表在计算机编程中构造算法(指令)时要记住真值表。
使用布尔操作符控制流量
要以流控制语句的形式控制程序的流和结果你可以使用条件后跟子句。
一个条件求值为布尔值true或false表示程序中做出决定的一个点。也就是说条件会告诉你某项计算结果是true还是false。
子句是跟在条件之后的代码块它规定了程序的结果。也就是说它是“如果x是true那么做这个”结构的“做这个”部分。
下面的代码块展示了一个比较运算符和条件语句协同工作来控制Go程序流程的例子:
if grade 65 { // Conditionfmt.Println(Passing grade) // Clause
} else {fmt.Println(Failing grade)
}这个程序将评估每个学生的成绩是及格还是不及格。以成绩为83的学生为例第一个语句将被求值为true并触发打印语句Passing grade。如果一个学生的成绩是59第一个语句将被求值为false因此程序将继续执行与else表达式绑定的print语句: Failing grade。
布尔运算符提供了一些条件可以通过流控制语句来决定程序的最终结果。
总结
本教程介绍了布尔类型的比较和逻辑操作符以及真值表和使用布尔进行程序流控制。