package main
import"fmt"funcmain(){
a :=10
b :=6// +
fmt.Println(a+b)// -
fmt.Println(a-b)// *
fmt.Println(a*b)// /
fmt.Println(a/b)// %
fmt.Println(a%b)// ++
fmt.Println(a)
a++
fmt.Println(a)// -
fmt.Println(b)
b--
fmt.Println(b)}
关系运算符
符号
说明
==
等于
!=
不等于
>
大于
<
小于
>=
大于等于
<=
小于等于
package main
import"fmt"funcmain(){
a :=10
b :=6// ==
fmt.Println(a==b)// !=
fmt.Println(a!=b)// >
fmt.Println(a>b)// <
fmt.Println(a<b)// >=
fmt.Println(a>=b)// <=
fmt.Println(a<=b)// ==
fmt.Println(a==b)}
逻辑运算符
符号
说明
&&
与
!
非
package main
import"fmt"funcmain(){
a :=10
b :=6
c :=6// &&
fmt.Println(a > b && b >= c)// ||
fmt.Println(a > b || b > c)// !var d bool
fmt.Println(!d)}
左移运算符"<<“是双目运算符。左移 n 位就是乘以 2 的 n 次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补 0。
A << 2 结果为 240 ,二进制为 1111 0000
>>
右移运算符">>“是双目运算符。右移 n 位就是除以 2 的 n 次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。
A >> 2 结果为 1
package main
import"fmt"funcmain(){var a uint=60/* 60 = 0011 1100 */var b uint=13/* 13 = 0000 1101 */var c uint=0
c = a & b /* 12 = 0000 1100 */
fmt.Println(c)
c = a | b /* 61 = 0011 1101 */
fmt.Println(c)
c = a ^ b /* 49 = 0011 0001 */
fmt.Println(c)
c = a <<2/* 240 = 1111 0000 a*(2**2) */
fmt.Println(c)
c = a >>2/* 15 = 0000 1111 a/(2*2) */
fmt.Println(c)}
其他运算符
运算符
描述
实例
&
返回变量存储地址
&a; 将给出变量的实际地址。
*
指针变量。
*a; 是一个指针变量
package main
import"fmt"funcmain(){var a int=4var b int32var c float32var ptr *int/* 运算实例 */
fmt.Printf("a 变量类型为 = %T\n", a );
fmt.Printf("b 变量类型为 = %T\n", b );
fmt.Printf("c 变量类型为 = %T\n", c );/* & 和 * 运算符实例 */
ptr =&a /* 'ptr' 包含了 'a' 变量的地址 */
fmt.Printf("a 的值为 %d\n", a);
fmt.Printf("*ptr 为 %d\n",*ptr);}