Skip to content

1.golang运算符

1.1Go语言内置运算符

算术运算符

运算符描述
+相加
-相减
*相乘
/相除
%求余

注意,++(自增)和--(自减)在Go语言中是单独语句,并不是运算符

go

package main

import "fmt"

func main() {
	a := 100
	b := 20
	x := a + b
	fmt.Printf("x: %v\n", x)
	//这里x = a - b 为啥没有冒号,由于上面已有声明,下面直接赋值
	x = a - b
	fmt.Printf("x: %v\n", x)
	x = a * b
	fmt.Printf("x: %v\n", x)
	x = a / b
	fmt.Printf("x: %v\n", x)
    //或者以下方式书写
    fmt.Printf("x==: %v\n", a/b)

	y := 100
	y++
	fmt.Printf("y: %v\n", y)
}

package main

import "fmt"

func main() {
	a := 100
	b := 20
	x := a + b
	fmt.Printf("x: %v\n", x)
	//这里x = a - b 为啥没有冒号,由于上面已有声明,下面直接赋值
	x = a - b
	fmt.Printf("x: %v\n", x)
	x = a * b
	fmt.Printf("x: %v\n", x)
	x = a / b
	fmt.Printf("x: %v\n", x)
    //或者以下方式书写
    fmt.Printf("x==: %v\n", a/b)

	y := 100
	y++
	fmt.Printf("y: %v\n", y)
}

关系运算符

返回结果,都是bool值

运算符描述
==检查两个值是否相等,如果相等返回true否则返回False
!=检查两个值是否不相等,如果不相等返回true否则返回False
>检查左边值大于右边值,如果是返回true否则返回Fals
>=检查左边值是否大于右边值,如果是返回true否则返回Fals
<检查左边值小于右边值,如果是返回true否则返回Fals
<=检查左边值小于等于右边值,如果是返回true否则返回Fals

逻辑运算符

运算符描述
&&逻辑AND,与。如果两边的操作都是True,则为True,否则为False
`
!逻辑NOT,非,取反。如果条件为True,则为False,否则为True
go
package main

import "fmt"

func main() {
	a := true
	b := false
	r := a && b
	fmt.Printf("r:= %v\n", r)
	r = a || b
	fmt.Printf("r:= %v\n", r)

	fmt.Printf("a:= %v\n", !a)
}
package main

import "fmt"

func main() {
	a := true
	b := false
	r := a && b
	fmt.Printf("r:= %v\n", r)
	r = a || b
	fmt.Printf("r:= %v\n", r)

	fmt.Printf("a:= %v\n", !a)
}

位运算符

运算符描述
&参与运算的两数各对应的二进位相与(两位均为1才为1)
|参与运算的两数各对应的二进位相或(两位有一个为1就为1)
^参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1.(两位不一样则为1)
<<左移n位就是乘以2的n次方。"a<<b"是把a的各二进制位全部左移b位,高位丢弃,低位补0.
>>右移n位就是除以2的n次方。"a>>b"是把a的各二进位全部右移b位
go
package main

import "fmt"

func main() {
	a := 4 //二进制 0100
	b := 8 //二进制 1000
	fmt.Printf("b: %b\n", b)

	fmt.Printf("(a & b): %v, %b \n", (a & b), (a & b))
	fmt.Printf("(a | b): %v ,%b \n", (a | b), (a | b))
	fmt.Printf("(a ^ b): %v ,%b\n", (a ^ b), (a ^ b))
	fmt.Printf("(a << 2): %v ,%b\n", (a << 2), (a << 2))
	fmt.Printf("(b >> 2): %v ,%b\n", (b >> 2), (b >> 2))
}
package main

import "fmt"

func main() {
	a := 4 //二进制 0100
	b := 8 //二进制 1000
	fmt.Printf("b: %b\n", b)

	fmt.Printf("(a & b): %v, %b \n", (a & b), (a & b))
	fmt.Printf("(a | b): %v ,%b \n", (a | b), (a | b))
	fmt.Printf("(a ^ b): %v ,%b\n", (a ^ b), (a ^ b))
	fmt.Printf("(a << 2): %v ,%b\n", (a << 2), (a << 2))
	fmt.Printf("(b >> 2): %v ,%b\n", (b >> 2), (b >> 2))
}

赋值运算符

运算符描述
=简单赋值,将一个表达式的值赋给一个左值
+=相加后在赋值
-=相减后在赋值
*=相乘后在赋值
/=相除后在赋值
%=求余后在赋值
<<=左移后在赋值
>>=右移后在赋值
&=按位与后在赋值
|=按位或后在赋值
^=按位异后在赋值
go
package main

import "fmt"

func main() {
	a := 100
	fmt.Printf("a=: %v\n", a)
	a += 1 //a = a + 1
	fmt.Printf("a=: %v\n", a)
	a -= 1
	fmt.Printf("a=: %v\n", a)
}
package main

import "fmt"

func main() {
	a := 100
	fmt.Printf("a=: %v\n", a)
	a += 1 //a = a + 1
	fmt.Printf("a=: %v\n", a)
	a -= 1
	fmt.Printf("a=: %v\n", a)
}

其他运算符

下表列出了Go语言的其他运算符。

运算符描述实例
&返回变量存储地址&a;将给出变量的实际地址。
*指针变量。*a;是一个指针变量
go
package main
import "fmt"

func main(){
	var a int =4
	var b int32
	var c float32
	var ptr *int
	/*运算符实例*/
	fmt.Printf("第1 行-a 变量类型为=%T\n",a)
	fmt.Printf("第2行-b变量类型为=%T\n",b)
	fmt.Printf("第3行-c变量类型为=%T\n",c)
	/*&和运算符实例*/
	ptr=&a /*'ptr'包含了‘a'变量的地址*/
	fmt.Printf("a 的值为%d\n",a)
	fmt.Printf("ptr 的值为%p\n",ptr)
	fmt.Printf("*ptr 为 %d\n"*ptr)
}
package main
import "fmt"

func main(){
	var a int =4
	var b int32
	var c float32
	var ptr *int
	/*运算符实例*/
	fmt.Printf("第1 行-a 变量类型为=%T\n",a)
	fmt.Printf("第2行-b变量类型为=%T\n",b)
	fmt.Printf("第3行-c变量类型为=%T\n",c)
	/*&和运算符实例*/
	ptr=&a /*'ptr'包含了‘a'变量的地址*/
	fmt.Printf("a 的值为%d\n",a)
	fmt.Printf("ptr 的值为%p\n",ptr)
	fmt.Printf("*ptr 为 %d\n"*ptr)
}