了解 Go 中的布尔逻辑

布尔数据类型(‘bool’)可以是两个值之一,无论是 true还是 false.布尔数据在编程中被用来进行比较和控制程序的流程。

布尔代表了与数学的逻辑分支有关的真理价值,该分支信息计算机科学中的算法. 以数学家乔治布尔的名字命名,布尔词总是以一个资本化的B开始。

Go for Boolean 中的数据类型为bool,全部为 lowercase. 值truefalse将始终分别为 lowercasetf,因为它们是 Go 中的特殊值。

本教程将涵盖您需要了解bool数据类型的基本知识,包括布尔比较、逻辑运算符和真理表。

运营商比较

在编程中, _comparison 运算符用于比较值并评估到一个单一的 Boolean 值,无论是 true 还是 false。

下表显示了布尔比较运算器。

OperatorWhat 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,并且(falsetrue)返回false

最后,我们有外部表达式: !(false),该表达式评估为 'true',因此如果我们打印此表达式,最终返回的值是:

1[secondary_label Output]
2true

逻辑运算符&&,``和!评估表达式并返回布尔值。

真理桌面

有很多关于数学逻辑分支的知识,但你可以选择性地学习一些,以提高你的算法思维在编程时。

以下是对比运算符 == 的真相表,以及每个逻辑运算符 &&, Átha Cliath!. 虽然您可能能够推理它们,但还可以有帮助地记住它们,因为这可以使您的编程决策过程更快。

《真理之桌》

x==yReturns
true==truetrue
true==falsefalse
false==truefalse
false==falsetrue

&&(和)真相桌

xandyReturns
trueandtruetrue
trueandfalsefalse
falseandtruefalse
falseandfalsefalse

《真理的桌子》《真理的桌子》

xoryReturns
trueortruetrue
trueorfalsetrue
falseortruetrue
falseorfalsefalse

《真相桌子》

notxReturns
nottruefalse
notfalsetrue

真理表是逻辑中常用的数学表,在计算机编程中构建算法(指令)时有用。

使用布尔运算器来控制流量

若要以流量控制语句的形式控制程序的流量和结果,可以使用 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的情况下,第一个陈述将被评估为真实,并触发了过渡级的印刷陈述。

布尔运算器提供条件,可以通过流量控制陈述来决定程序的最终结果。

结论

本教程通过了属于布尔式类型的比较和逻辑操作员,以及真理表,并使用布尔语用于程序流量控制。

Published At
Categories with 技术
Tagged with
comments powered by Disqus