ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
  一个布尔类型的值只有两种:true 或 false。if 和 for 语句的条件部分都是布尔类型的值,并且`==`和`<`等比较操作也会产生布尔型的值。   一元操作符`!`对应逻辑非操作,因此`!true`的值为 false,更复杂一些的写法是`(!true==false) ==true`,实际开发中我们应尽量采用比较简洁的布尔表达式,就像用 x 来表示`x==true`。 ``` var aVar = 10 aVar == 5 // false aVar == 10 // true aVar != 5 // true aVar != 10 // false ``` Go语言对于值之间有比较非常严格的限制,只有两个相同类型的值才可以进行比较。若值的类型是接口(interface),那么它们也必须都实现了相同的接口。若其中一个值是常量,另外一个值可以不是常量。但是类型必须和该常量类型相同。若是以上条件都不满足,则必须将其中一个值的类型转换为另外一个值的类型相同之后才可以进行比较。 布尔值可以和`&&`(AND)和`||`(OR)操作符结合,并且有短路行为。若运算符左边的值已经可以确定整个布尔表达式的值,那么运算符右边的值将不再被求值,因此以下的表达式总是安全的: ``` s != "" && s[0] === 'x' ``` 其中s[0]操作如果应用于空字符串将会导致panic异常。 布尔值并不会隐式转换为数字值0或1,反之亦然。必须使用if语句显示的进行转换: ``` i := 0 if b { i = 1 } ``` **总结:布尔型无法参与值运算,也无法与其他类型进行转换。**