天天看點

Golang:2.6、Golang 運算符

  • 算術運算符
  • 關系運算符
  • 邏輯運算符
  • 位運算符
  • 指派運算符

算術運算符

運算符 描述

+

-

*

/

%

取餘

++

--

是單獨的語句,并不是運算符

示例

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
}
           

關系運算符

運算符 描述

==

相等

!=

不相等

>

大于

>=

大于等于

<

小于

<=

小于等于

示例

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
}

           

邏輯運算符

運算符 描述

&&

邏輯與

\|\|

邏輯或

!

邏輯非
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
}
           

位運算符

運算符 描述

&

按位與

\|

按位或

^

按位異或

<<

左移

>>

右移
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

}

           

指派運算符

運算符 描述

=

指派(右邊的值指派給左邊變量)

+=

相加後指派

-=

相減後指派

*=

相乘後指派

/=

相除後指派

%=

取餘後指派

<<=

左移後指派

>>=

右移後指派

&=

按位與後指派

\|=

按位或後指派

^=

按位異或後指派
package main

import (
	"fmt"
)

func main() {
	a := 1

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

}