07-Go语言运算符
2018-10-15 本文已影响0人
低头看云
算术运算符
![](https://img.haomeiwen.com/i7924287/6f97ffa8886ff4c8.jpg)
package main
import "fmt"
func main() {
// Go语言算术运算符
// 注意点: Go语言中必须相同类型才能进行运算
/*
+ 相加
- 相减
* 相乘
/ 相除
% 取余
++ 自增
-- 自减
*/
var num1, num2 = 8, 2
// +
var res int = num1 + num2
// -
var res1 int = num1 - num2
// *
var res2 int = num1 * num2
// /
var res3 int = num1 / num2
// %
var res4 int = num1 % num2
// ++
// 注意点: ++ 和 -- 都不可以前置, 而且必须独占一行
num1++
var res5 int = num1
// --
num1--
var res6 int = num1
fmt.Println(res) // 10
fmt.Println(res1) // 6
fmt.Println(res2) // 16
fmt.Println(res3) // 4
fmt.Println(res4) // 0
fmt.Println(res5) // 9
fmt.Println(res6) // 8
}
- 注意点:
- Go语言中必须相同类型才能进行运算
- ++ 和 -- 都不可以前置, 而且必须独占一行
关系运算符
![](https://img.haomeiwen.com/i7924287/4da079d6271c00cc.jpg)
- 注意点:
- Go语言中没有非零即真, 关系运算符只能返回true和false
- 关系运算符优先级, ()小括号的优先级最高
逻辑运算符
![](https://img.haomeiwen.com/i7924287/4723147f1371f7c7.jpg)
&& 一假则假
|| 一真则真
! 真变假, 假变真
- 注意点:
- GO语言中的逻辑运算符返回的是true 和 false
- 参与运算的表达式的返回值都必须是布尔类型才行
res1 := 1 || 1 // 报错, || 两边必须是布尔类型 res2 := 1 && 1 // 报错, && 两边必须是布尔类型 res3 := !0 // 报错, 没有非零即真
位运算符
![](https://img.haomeiwen.com/i7924287/5adc9c51da459fa2.jpg)
- 注意点:
- 新增了 &^运算符
package main import "fmt" func main() { // &^ 逻辑清零运算符 // 规则: 如果b的二进制位是1, 那么就清零 // 如果b的二进制位是0, 那么就保存a位对应的二进制 /* 0100 &^ 1001 ------------------- 0100 // 4 */ a, b := 4, 9 res := a &^ b fmt.Println(res) }
赋值运算符
![](https://img.haomeiwen.com/i7924287/93d96aa272b16268.jpg)
package main
import "fmt"
func main() {
// Go语言中的赋值运算符和C语言一样
// = += *= /= %= &= |= ^= <<= >>=
// 只不过新增了一个 &^=
var num int
num = 10
num += 6 // 相当于 num = num + 6
num -= 6 // 相当于 num = num - 6
num *= 6 // 相当于 num = num * 6
num /= 6 // 相当于 num = num / 6
num %= 6 // 相当于 num = num % 6
num &= 6 // 相当于 num = num & 6
num |= 6 // 相当于 num = num | 6
num <<= 6 // 相当于 num = num << 6
num >>= 6 // 相当于 num = num >> 6
num &^= 6 // 相当于 num = num &^ 6
fmt.Println(num)
}
其他运算符
![](https://img.haomeiwen.com/i7924287/7340374512207cc9.jpg)
package main
import "fmt"
func main() {
// & 取地址运算符
// * 访问地址运算符
var num int
num = 10
var p *int
p = &num
fmt.Println(p) // p 里面存放的是地址
fmt.Println(*p) // *p 里面存放的是p所指向的内存单元
}