目录
- [1. golang 运算符](#1. golang 运算符)
- 
- [1.1. Types of Operators](#1.1. Types of Operators)
- [1.2. Bitwise Operators (位运算符)](#1.2. Bitwise Operators (位运算符))
- [1.3. Logical Operators (逻辑运算符)](#1.3. Logical Operators (逻辑运算符))
- [1.4. Arithmetic Operators (算术运算符)](#1.4. Arithmetic Operators (算术运算符))
- [1.5. Assignment Operators (赋值运算符)](#1.5. Assignment Operators (赋值运算符))
- [1.6. Comparison Operators (比较运算符)](#1.6. Comparison Operators (比较运算符))
 
1. golang 运算符
1.1. Types of Operators
- Bitwise Operators (位运算符)
- Logical Operators (逻辑运算符)
- Arithmetic Operators (算术运算符)
- Assignment Operators (赋值运算符)
- Comparison Operators (比较运算符)
1.2. Bitwise Operators (位运算符)
            
            
              go
              
              
            
          
          package main
import "fmt"
func main() {
    x := 3
    y := 5
	z := false
    // 3 -> 011
    // 5 -> 101
    fmt.Println("X AND Y = ", x & y)
    fmt.Println("X OR Y = ", x | y)
    fmt.Println("X EXOR Y = ", x ^ y)
    fmt.Println("X Right Shift 1  = ", x >> 1)
    fmt.Println("X Right Shift 2  = ", x >> 2)
    fmt.Println("Y Left Shift 1 = ", y << 1)
}
            
            
              sh
              
              
            
          
          $ go run bitwise/main.go
X AND Y =  1
X OR Y =  7
X EXOR Y =  6
X Right Shift 1  =  1
X Right Shift 2  =  0
Y Left Shift 1 =  10很多编程语言使用 ~ 作为一元按位取反(NOT)操作符, Go 重用 ^ XOR 操作符来按位取反:
            
            
              go
              
              
            
          
          // 错误的取反操作
func main() {
    fmt.Println(~2) // bitwise complement operator is ^
}
 
// 正确示例
func main() {
    var d uint8 = 2
    fmt.Printf("%08b\n", d)     // 00000010
    fmt.Printf("%08b\n", ^d)    // 11111101
}同时 ^ 也是按位异或(XOR)操作符:
            
            
              go
              
              
            
          
          10000010 ^ 00000010 = 100000001.3. Logical Operators (逻辑运算符)
            
            
              go
              
              
            
          
          package main
import "fmt"
func main() {
    a := 45
    b := "Something"
    fmt.Println(a > 40 && b == "Something")
    fmt.Println(a < 40 && b == "Something")
    fmt.Println(a < 40 || b == "Something")
    fmt.Println(a < 40 || b != "Something")
    fmt.Println(!(a < 40 || b != "Something"))
}
            
            
              sh
              
              
            
          
          $ go run logical/main.go
true
false
true
false
true1.4. Arithmetic Operators (算术运算符)
            
            
              go
              
              
            
          
          package main
import "fmt"
func main() {
    a := 30
    b := 50
    fmt.Println("A + B = ", a+b)
    fmt.Println("A - B = ", a-b)
    fmt.Println("A * B = ", a*b)
    fmt.Println("A / B = ", a/b)
    fmt.Println("A % B = ", a%b)
}
            
            
              sh
              
              
            
          
          $ go run arithmetic/main.go
A + B =  80
A - B =  -20
A * B =  1500
A / B =  0
A % B =  30
            
            
              go
              
              
            
          
          package main
import "fmt"
func main() {
    k := 3
    j := 20
    fmt.Println("k = ", k)
    fmt.Println("j = ", j)
    k++
    j--
    fmt.Println("k = ", k)
    fmt.Println("j = ", j)
}
            
            
              sh
              
              
            
          
          $ go run arithmetic/main.go
k =  3
j =  20
k =  4
j =  191.5. Assignment Operators (赋值运算符)
            
            
              go
              
              
            
          
          package main
import "fmt"
func main() {
    var a int = 100
    b := 20
    fmt.Println("a = ", a)
    fmt.Println("b = ", b)
    a += 30
    fmt.Println("a = ", a)
    b -= 5
    fmt.Println("b = ", b)
    a *= b
    fmt.Println("a = ", a)
    fmt.Println("b = ", b)
    a /= b
    fmt.Println("a = ", a)
    fmt.Println("b = ", b)
    a %= b
    fmt.Println("a = ", a)
    fmt.Println("b = ", b)
}
            
            
              sh
              
              
            
          
          $ go run assignment/main.go
a =  100
b =  20
a =  130
b =  15
a =  1950
b =  15
a =  130
b =  15
a =  10
b =  151.6. Comparison Operators (比较运算符)
            
            
              go
              
              
            
          
          package main
import "fmt"
func main() {
    a := 45
    b := 12
    fmt.Println("Is A equal to B ? ", a == b)
    fmt.Println("Is A not equal to B ? ", a != b)
    fmt.Println("Is A greater than B ? ", a > b)
    fmt.Println("Is A less than B ? ", a < b)
    fmt.Println("Is A greater than or equal to B ? ", a >= b)
    fmt.Println("Is A less than or equal to B ? ", a <= b)
}
            
            
              sh
              
              
            
          
          $ go run comparison/main.go
Is A equal to B ?  false
Is A not equal to B ?  true
Is A greater than B ?  true
Is A less than B ?  false
Is A greater than or equal to B ?  true
Is A less than or equal to B ?  false