算数运算符

程序在运行过程中执行数学运算时候需要算数运算符。

运算符描述说明
+相加2 + 5 = 7
-相减5 - 2 = 3
*相乘2 * 5 = 10
/相除 取商5 / 2 = 2
%相除 取余数5 / 2 = 1
++自身加15++ = 6
--自身减15-- = 4

关系运算符

关系运算符的结果是bool类型的

运算符描述说明
==比较相等6 == 6 结果 true
!=不相等6 != 6 结果 false
>大于6 > 1 结果 true
<小于6 < 1 结果 false
>=大于等于6 >= 6 结果 true
<=小于等于6 <= 5 结果 false

逻辑运算符

运算符描述说明
&&逻辑与A && B,若A为真,B为假,则结果为false;若A为真,B为真,则结果为true(一假则假,全真为真)
||逻辑与A && B,若A为真,B为假,则结果为true(一真为真,全假为假)
!逻辑非相反方向为真(假为真,真为假)

位运算符

运算符描述说明
&按位与两个位都为1时,结果才为1
|按位或两个位都为0时,结果才为0
^按位异或a^b 需要将ab都转为二进制,看对应位置上的数值,相同为0,不同为1
&^位清空a&^b 对于b上面的每个数值,如果为0,则去对应a上的数值,如果为1,则结果位取0
<<按位左移a<<b 将a转为二进制,向左移动b个位
>>按位右移a>>b 将a转为二进制,向右移动b个位
package main

import "fmt"

func main() {
    var a int8 = 12
    var b int8 = 15
    fmt.Printf("%b, %b \n", a, b) // 1100 a的二进制 | 1111 b的二进制
    // 按位与
    fmt.Printf("%b \n", a&b) // 12  1100 & 1111 = 1100
    // a的二进制         1100
    // b的二进制         1111
    // 按位与计算     1100 转为十进制 12

    // 按位或
    fmt.Printf("%b \n", a|b) // 15  1100 | 1111 = 1111
    // a的二进制         1100
    // b的二进制         1111
    // 按位或计算     1111 转为十进制 15

    // 按位异或
    fmt.Printf("%b \n", a^b) // 3   1100 ^ 1111 = 0011
    // a的二进制         1100
    // b的二进制         1111
    // 按位异或计算     0011 转为十进制 3

    // 按位清空
    var a1 int8 = 7
    var b1 int8 = 3
    fmt.Printf("%b \n", a1&^b1) // 4  0111 &^ 0011 = 0100
    // a的二进制         0111
    // b的二进制         0011
    // 按位清空计算     0100 转为十进制 4

    // 左移
    fmt.Printf("%b \n", a<<2) // 48  1100 << 2 = 110000
    // a的二进制         1100
    // 左移计算         110000 转为十进制 48

    // 右移
    fmt.Printf("%b \n", a>>2) // 3   1100 >> 2 = 11
    // a的二进制         1100
    // 右移计算         11 转为十进制 3
}

赋值运算符

运算符描述
=将等号右侧的数值,赋值给左侧的变量
+=自身加上后面的值,然后赋值给左侧的变量
-=自身减去后面的值,然后赋值给左侧的变量
/=自身除以后面的值,然后赋值给左侧的变量
%=自身与后面的值求得余数之后,赋值给左侧的变量
<<=左移后再赋值
>>=右移后再赋值
&=按位与后再赋值
|=按位或后再赋值
^=按位异或后再赋值

占位符号

占位符表示在程序中输出一行字符串时候,或者格式化输出字符串的时候使用。go内置包fmtPrintf方法可以在控制台格式化打印出用户输入的内容。fmt.Printf("%T",x)

占位符说明举例输出
%d十进制的数字fmt.Printf("%d", 10)10
%b二进制的数字fmt.Printf("%b", 5)101
%T取类型fmt.Printf("%T", true)bool
%s取字符串fmt.Printf("%s", "123")123
%t去bool类型的值fmt.Printf("%t", true)true
%p取内存地址p := "123"
fmt.Printf("%p", &p)
0xc000096210
Last modification:November 10, 2022
If you think my article is useful to you, please feel free to appreciate