版权声明:我已加入“维权骑士”(http://rightknights.com)的版权保护计划,知乎专栏“网路行者”下的所有文章均为我本人(知乎ID:弈心)原创,未经允许不得转载。

如果你喜欢我的文章,请关注我的知乎专栏“网路行者”https://zhuanlan.zhihu.com/c_126268929, 里面有更多像本文一样深度讲解计算机网络技术的优质文章。


布尔值基本概念

同Python一样,Go中布尔值(Boolean)分为true和false,用来判断条件是否成立,唯一的区别是Python中布尔值的首字母为大写(True和False),而Go中则为小写的true和false。讲到布尔值,自然要介绍和它紧密相关的比较运算符和逻辑运算符。

比较运算符

Go中比较运算符的类型和用法与Python几乎完全相同,它们返回的值都为布尔值,常见的比较运算符(Comparison Operators)如下表所示。

网络工程师进阶之路(网络工程师的Golang之路)(1)

字符、字符串、整数、浮点数都能用比较运算符作比较,举例如下。

package main import "fmt" func main() { //字符之间做比较 fmt.Println('P'=='G') //英文字符串之间做比较的话,按首字母按顺序比较,"a"最小,"z"最大,所以"abc" > "bcd"返回false fmt.Println("abc" > "bcd") //如果首字母相同,则比较第二、第三个字母,以此类推,这里首字母a一样,因为第二个字母b小于c,所以"ab">"ac"返回false fmt.Println("ab">"ac") //整数之间做比较 fmt.Println(100 <= 101) //浮点数之间做比较 fmt.Println(1.1 >= 1.2 ) //整数和浮点数之间做比较 fmt.Println(1.0 == 1 ) }

网络工程师进阶之路(网络工程师的Golang之路)(2)

逻辑运算符

除了比较运算符,使用逻辑运算符(Logical Operators)也能返回布尔值。逻辑运算符有 3 种:与( and )、或(or)、非(not),如下表所示。

网络工程师进阶之路(网络工程师的Golang之路)(3)

和Python不同,Go语言中没有and、or、not这几个关键词,取而代之的是&&(and)、II(or)、!(not)这几个符号,举例如下。

package main import "fmt" func main() { //和(and)运算 fmt.Println(true && true) fmt.Println(true && false) fmt.Println(false && true) fmt.Println(false && false) //与(or)运算 fmt.Println(true || true) fmt.Println(true || false) fmt.Println(false || true) fmt.Println(false || false) //非(not)运算 fmt.Println(!true) fmt.Println(!false) }

网络工程师进阶之路(网络工程师的Golang之路)(4)

注意一点:取非的那个感叹号"!"必须是用英文输入法输入的感叹号"!",用中文输入法输入的感叹号“!”系统会报错。

,