Skip to content

2.6、Golang 运算符

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符

算术运算符

运算符描述
+
-
*
/
%取余

++-- 是单独的语句,并不是运算符

示例

go
package main

import "fmt"

func main() {
    a := 2
    b := 5

    r := a + b
    fmt.Printf("r: %v\n", r)
    // r: 7

    r = b - a
    fmt.Printf("r: %v\n", r)
    // r: 3

    r = a * b
    fmt.Printf("r: %v\n", r)
    // r: 10

    r = b / a
    fmt.Printf("r: %v\n", r)
    // r: 2

    r = b % a
    fmt.Printf("r: %v\n", r)
    // r: 1

    a++
    fmt.Printf("a: %v\n", a)
    // a: 3

    a--
    fmt.Printf("a: %v\n", a)
    // a: 2
}

关系运算符

运算符描述
==相等
!=不相等
>大于
>=大于等于
<小于
<=小于等于

示例

go
package main

import (
	"fmt"
)

func main() {
	a := 1
	b := 2

	fmt.Printf("%v\n", a == b)
	// false

	fmt.Printf("%v\n", a > b)
	// false

	fmt.Printf("%v\n", a >= b)
	// false

	fmt.Printf("%v\n", a < b)
	// true

	fmt.Printf("%v\n", a <= b)
	// true

	fmt.Printf("%v\n", a != b)
	// true
}

逻辑运算符

运算符描述
&&逻辑与
||逻辑或
!逻辑非

示例

go
package main

import (
	"fmt"
)

func main() {
	a := true
	b := false

	fmt.Printf("%v\n", a && b)
	// false

	fmt.Printf("%v\n", a || b)
	// true

	fmt.Printf("%v\n", !a)
	// false
}

位运算符

运算符描述
&按位与
|按位或
^按位异或
<<左移
>>右移

示例

go
package main

import (
	"fmt"
)

func main() {
	a := 4
	b := 8

	fmt.Printf("a: %b\n", a)
	// a: 100

	fmt.Printf("b: %b\n", b)
	// b: 1000

	r := a & b
	fmt.Printf("r: %v\n", r)
	// r: 0

	r = a | b
	fmt.Printf("r: %v\n", r)
	// r: 12

	r = a ^ b
	fmt.Printf("r: %v\n", r)
	// r: 12

	r = a << 2
	fmt.Printf("r: %v\n", r)
	// r: 16

	r = a >> 2
	fmt.Printf("r: %v\n", r)
	// r: 1

}

赋值运算符

运算符描述
=赋值(右边的值赋值给左边变量)
+=相加后赋值
-=相减后赋值
*=相乘后赋值
/=相除后赋值
%=取余后赋值
<<=左移后赋值
>>=右移后赋值
&=按位与后赋值
|=按位或后赋值
^=按位异或后赋值

示例

go
package main

import (
	"fmt"
)

func main() {
	a := 1

	a += 1 // 等价于 a = a + 1
	fmt.Printf("a: %v\n", a)
	// a: 2

}