ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 运算符 * 算术运算符 * 关系运算符 * 逻辑运算符 * 位运算符 * 赋值运算符 * 其他运算符 ## 算术运算符 | 运算符 | 描述 | | --- | --- | | + | 相加 | | \- | 相减 | | \* | 相乘 | | / | 相除 | | % | 求余 | **注意:**`++`(自增)和`--`(自减)在Go语言中是单独的语句,并不是运算符。 ## 关系运算符 | 运算符 | 描述 | | --- | --- | | \== | 检查两个值是否相等,如果相等返回 True 否则返回 False。 | | != | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 | | \> | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 | | \>= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 | | < | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 | | <= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 | ## 逻辑运算符 | 运算符 | 描述 | | --- | --- | | && | 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 | | \|\| | 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 | | ! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。 | ## 位运算符 | 运算符 | 描述 | | --- | --- | | & | 参与运算的两数各对应的二进位相与。 (两位均为1才为1) | | \| | 参与运算的两数各对应的二进位相或。 (两位有一个为1就为1) | | ^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1) | | << | 左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 | | \>> | 右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。 | 位运算符 &, |, 和 ^ 的计算: | p \| q | p & q | p | q | p ^ q | | --- | --- | --- | --- | --- | | 0 | 0 | 0 | 0 | 0 | | 0 | 1 | 0 | 1 | 1 | | 1 | 1 | 1 | 1 | 0 | | 1 | 0 | 0 | 1 | 1 | ~~~ packagemain import"fmt" funcmain(){    var auint=60     /* 60 = 0011 1100 */     var buint=13     /* 13 = 0000 1101 */    var cuint=0             c=a & b      /* 12 = 0000 1100 */    fmt.Printf("第一行 - c 的值为 %d\n",c) //第一行 - c 的值为 12    c=a|b      /* 61 = 0011 1101 */    fmt.Printf("第二行 - c 的值为 %d\n",c) //第二行 - c 的值为 61    c=a^b     /* 49 = 0011 0001 */    fmt.Printf("第三行 - c 的值为 %d\n",c) //第三行 - c 的值为 49    c=a <<2   /* 240 = 1111 0000 */    fmt.Printf("第四行 - c 的值为 %d\n",c) //第四行 - c 的值为 240    c=a >>2   /* 15 = 0000 1111 */    fmt.Printf("第五行 - c 的值为 %d\n",c) //第五行 - c 的值为 15 } ~~~ ## 赋值运算符 | 运算符 | 描述 | 实例 | | --- | --- | --- | | \= | 简单的赋值运算符,将一个表达式的值赋给一个左值 | C = A + B 将 A + B 表达式结果赋值给 C | | += | 相加后再赋值 | C += A 等于 C = C + A | | \-= | 相减后再赋值 | C -= A 等于 C = C - A | | \*= | 相乘后再赋值 | C \*= A 等于 C = C \* A | | /= | 相除后再赋值 | C /= A 等于 C = C / A | | %= | 求余后再赋值 | C %= A 等于 C = C % A | | <<= | 左移后赋值 | C <<= 2 等于 C = C << 2 | | \>>= | 右移后赋值 | C >>= 2 等于 C = C >> 2 | | &= | 按位与后赋值 | C &= 2 等于 C = C & 2 | | ^= | 按位异或后赋值 | C ^= 2 等于 C = C ^ 2 | | \|= | 按位或后赋值 | C \|= 2 等于 C = C \| 2 | ~~~ packagemain import"fmt" funcmain(){    var aint=21    var cint    c = a    fmt.Printf("第 1 行 - =  运算符实例,c 值为 = %d\n",c) //第 1 行 - = 运算符实例,c 值为 = 21    c += a    fmt.Printf("第 2 行 - += 运算符实例,c 值为 = %d\n",c) //第 2 行 - += 运算符实例,c 值为 = 42    c -= a    fmt.Printf("第 3 行 - -= 运算符实例,c 值为 = %d\n",c) //第 3 行 - -= 运算符实例,c 值为 = 21    c *= a    fmt.Printf("第 4 行 - *= 运算符实例,c 值为 = %d\n",c) //第 4 行 - *= 运算符实例,c 值为 = 441    c /= a    fmt.Printf("第 5 行 - /= 运算符实例,c 值为 = %d\n",c) //第 5 行 - /= 运算符实例,c 值为 = 21    c  =200;    c <<= 2    fmt.Printf("第 6行  - <<= 运算符实例,c 值为 = %d\n",c) //第 6行 - <<= 运算符实例,c 值为 = 800    c >>= 2    fmt.Printf("第 7 行 - >>= 运算符实例,c 值为 = %d\n",c) //第 7 行 - >>= 运算符实例,c 值为 = 200    c &= 2    fmt.Printf("第 8 行 - &= 运算符实例,c 值为 = %d\n",c) //第 8 行 - &= 运算符实例,c 值为 = 0    c ^= 2    fmt.Printf("第 9 行 - ^= 运算符实例,c 值为 = %d\n",c) //第 9 行 - ^= 运算符实例,c 值为 = 2    c |= 2    fmt.Printf("第 10 行 - |= 运算符实例,c 值为 = %d\n",c) //第 10 行 - |= 运算符实例,c 值为 = 2 } ~~~ ## 其他运算符 | 运算符 | 描述 | 实例 | | --- | --- | --- | | & | 返回变量存储地址 | &a; 将给出变量的实际地址。 | | \* | 指针变量。 | \*a; 是一个指针变量 |