布尔值有两种:true和false。if和for语句中的条件都是布尔值,比较运算符== 、<等也会产生一个布尔值。一元运算符! 是逻辑取反操作,所以!true就是false。Go语言提倡简洁的风格,因此我们会将x == true这种表达式直接写成x:if x {..} 。

布尔值可以结合&&(AND) 、|| (OR)一起使用,这两个操作符都有短路特性,如果操作符的左边表达式就能决定结果了,那操作符右边的表达式不会求值:

s != "" && s[0] == 'x'

如果s是空字符串,那s[0]会panic,但是因为s为""的时候,&&左边的表达式是false,因此根据短路规则,&&右边的表达式不会求值,也就不会panic。

因为&&比||的优先级更高,所以下面的条件表达式不需要括号:

if 'a' <= c && c <= 'z' ||'A' <= c && c <= 'Z' ||'0' <= c && c <= '9' {// ...ASCII letter or digit...
}

在布尔值和数值之间并没有隐式的类型转换(再次强调,Go是强类型静态语言),反之亦然。需要显式的使用if:

i := 0
if b {i = 1
}

如果这个操作经常发生,那么可以使用一个转换函数:

func btoi(b bool) int {if b {return 1}return 0
}

反向操作也很简单,甚至不需要使用函数,不过为了和上面的代码保持对称性:

func itob(i int) bool { return i != 0 }

文章所有权:Golang隐修会 联系人:孙飞,CTO@188.com!

Go语言核心之美 2.4-布尔值相关推荐

  1. Go语言核心之美-必读

    Go语言核心之美开篇了!,无论你是新手还是一代高人,在这个系列文章中,总能找到你想要的! 博主是计算机领域资深专家并且是英语专8水平,翻译标准只有三个:精确.专业.不晦涩,为此每篇文章可能都要耗费数个 ...

  2. Go语言核心之美 2.6-常量

    在Go语言中,常量表达式是在编译期求值的,因此在程序运行时是没有性能损耗的.常量的底层类型是前面提过的基本类型:布尔值,字符串,数值变量. 常量的声明方式和变量很相似,但是常量的值是不可变的,因此在运 ...

  3. Go语言核心之美 3.3-Map

    哈希表是一种非常好用.适用面很广的数据结构,是key-value对的无序集合.它的key是唯一的,通过key可以在常数复杂度时间内进行查询.更新或删除,无论哈希表有多大. Go语言的map类型就是对哈 ...

  4. Go语言核心之美 2.1-整数

    第二章 序 在计算机底层,一切都是比特位.然而计算机一般操作的都是固定大小的值,称之为字(word).字会被解释为整数.浮点数.比特位数组.内存地址等,这些字又可以进一步聚合成数据包(packet). ...

  5. Go语言核心之美 2.5-字符串

    字符串是不可变的字节序列,虽然可以包含任意数据,包括0这个字节,不过字符串通常是用来包含可读性较强的文本.文本字符串通常采用UTF-8编码,由Unicode码点(rune)组成. 内置的len函数会返 ...

  6. Go语言核心之美 3.1-数组

    上一章我们深入学习了基本数据类型,它们是构建复杂数据类型的基础,是组成Go语言世界的原子.本章,我们将学习复合数据类型:通过不同的方式将基本类型组合起来.主要有四种复合类型--数组,切片(slice) ...

  7. Go语言核心之美 3.4-Struct结构体

    struct(结构体)也是一种聚合的数据类型,struct可以包含多个任意类型的值,这些值被称为struct的字段.用来演示struct的一个经典案例就是雇员信息,每条雇员信息包含:员工编号,姓名,住 ...

  8. Go语言核心之美 1.5-作用域

    变量的作用域是指程序代码中可以有效使用这个变量的范围.不要将作用域和生命期混在一起.作用域是代码中的一块区域,是一个编译期的属性:生命期是程序运行期间变量存活的时间段,在此时间段内,变量可以被程序的其 ...

  9. Go语言核心之美 1.4-包和文件

    一.Package Go语言中的包(Package)就像其它语言的库(Library)或模块(Module)一样,支持模块化,封装性,可重用性,单独编译等特点.包的源码是由数个.go文件组成,这些文件 ...

最新文章

  1. hashmap是线程安全的吗?怎么解决?_解决SimpleDateFormat线程安全问题
  2. java面试题之----get和post请求方法的区别
  3. ZOJ3805Machine(二叉树左右子树变换)
  4. adb-常用命令记录
  5. python居中对齐符号怎么打_Python字符串居中对齐
  6. 工程计算软件_同望BIM工程量计算软件—土石方
  7. win7美化_Windows桌面管理美化,让桌面更加方便、高效
  8. 在React的render方法中使用箭头函数
  9. 强悍的 ubuntu —— 窗口界面管理与设置
  10. 系统发育树的美化~Figtree(图文教程)
  11. 37 一次获取redis连接阻塞引起的 Thread pool is EXHAUSTED
  12. 苹果官方mfi认证名单_【大型推销配件现场】苹果回应iPhone12消磁,这波操作太6了 - 社会...
  13. Java的小tips(1) ------关于“Java :找不到符号”类问题的解读
  14. 【毕设项目】基于单片机的遥控小车设计与实现 - 嵌入式 物联网 stm32 c51
  15. leofs管理工具之s3 browser连接
  16. LCD显示屏 字模 俄文字体显示8*16
  17. openstack-创建多网络虚机
  18. Retrofit2网络请求的path部分的“/”斜杠乱码为“百分号2F”,请求结果为400的请求无效
  19. C++入门基础(万字总结)(建议收藏!!!)
  20. Android官方实现的层次状态机Hierarchical State Machine源代码

热门文章

  1. Android客户端登录注册模块
  2. halcon19.11深度学习关于分类入门案例
  3. 2020李宏毅机器学习笔记-Convolution Netural Network
  4. 【转载】手机UC浏览器缓存视频合并方法
  5. Pytho 常见模块 / 用法备忘录
  6. PaddleNLP基于ERNIR3.0文本分类以中医疗搜索检索词意图分类(KUAKE-QIC)为例【多分类(单标签)】
  7. 可复制的领导力前两章总结
  8. 英语用法整理_英式\美式英语区分
  9. ImageIO类说明
  10. c++ 不撞南墙不回头——树形动态规划(树规)