Go语言核心之美 2.4-布尔值

erlib · · 1824 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

布尔值有两种: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!






有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:erlib

查看原文:Go语言核心之美 2.4-布尔值

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1824 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传