# 运算符

Go 语言的运算符和其他编程语言基本相同,了解下即可

# 算术运算符

/* hello.go */
package main
import (
	"fmt"
)
func main() {
	a, b := 12, 20
	var c int
	c = a + b //32
	c = a - b //-8
	c = a * b //240
	c = a / b //0 地板除,只取整数部分
	c = b / a //1 地板除,只取整数部分,
	c = a % b //12
	c = b % a //8
	fmt.Println("c =", c)
	//c = a++ 自增和自减不能作为赋值表达式
	//++a 不能这样写,自增、自减符号只能跟变量后
	a++
	fmt.Println("a =", a)
	b--
	fmt.Println("b =", b)
}

# 关系运算符

/* hello.go */
package main
import (
	"fmt"
)
func main() {
	a, b := 12, 20
	fmt.Println("数字比较")
	fmt.Println(a == b) //false
	fmt.Println(a != b) //true
	fmt.Println(a > b)  //false
	fmt.Println(a < b)  //true
	fmt.Println(a >= b) //false
	fmt.Println(a <= b) //true
	c, d := "Jalen", "Jalen"
	fmt.Println("字符串比较")
	fmt.Println(c == d) //true
	e, f := "Jalen1", "Jalen2"
	fmt.Println(e == f) //false
	fmt.Println(e > f)  //false
	fmt.Println(e < f)  //true
	g, h := "abc_a", "abc_b"
	fmt.Println(g > h) //false
	fmt.Println(g < h) //true
}

# 逻辑运算符

/* hello.go */
package main
import (
	"fmt"
)
func main() {
	a, b := true, false
	fmt.Println(a && b) //false
	fmt.Println(a || b) //true
	fmt.Println(!a)     //false
	fmt.Println(!b)     //true
	// 下面报 invalid operation: m && n (operator x not defined on int)
	// m, n := 0, 1
	// fmt.Println(m && n) //false
	// fmt.Println(m || n) //true
	// fmt.Println(!m)     //false
	// fmt.Println(!n)     //true
}

# 位运算符

/* hello.go */
package main
import (
	"fmt"
)
func main() {
	var a int = 50     // 对应二进制:0011 0010
	var b int = 60     // 对应二进制:0011 1100
	fmt.Println(a & b) //48,对应二进制:0011 0000
	fmt.Println(a | b) //62,对应二进制:0011 1110
	fmt.Println(a ^ b) //14,对应二进制:0000 1110
	fmt.Println(a << 2) //200,二进制左移 2 位,相当于 *2^2 对应二进制:1100 1000
	fmt.Println(b >> 2) //15,二进制右移 2 位,相当于 /2^2 对应二进制:0000 1111
}

# 赋值运算符

/* hello.go */
package main
import (
	"fmt"
)
func main() {
	var a int = 12
	var b int = 20
	var c int
	c = a + b //32
	c += a    //44
	c -= a    //32
	c *= a    //384
	c /= a    //32
	c %= a    //8
	c <<= a   //32768
	c >>= a   //8
	c &= a    //1000 & 1100 = 1000 = 8
	c ^= a    //1000 ^ 1100 = 1100 = 4
	c |= a    //0100 | 1100 = 1100 = 12
	fmt.Println(c)
}

# 其他运算符

/* hello.go */
package main
import (
	"fmt"
)
func main() {
	var a int = 4
	var b int32
	var c float32
	var ptr *int // 声明 ptr 为指针变量
	fmt.Printf("第 1 行 - a 变量类型为 = %T\n", a)
	fmt.Printf("第 2 行 - b 变量类型为 = %T\n", b)
	fmt.Printf("第 3 行 - c 变量类型为 = %T\n", c)
	// 直接用变量赋值报:cannot use a (variable of type int) as *int value in assignment
	// ptr = a
	ptr = &a                        // 必须添加 & amp; 符号,表示返回变量存储地址
	fmt.Printf("a 的值为  %d\n", a)    //4
	fmt.Printf("*ptr 为 %d\n", *ptr) //4
	fmt.Printf("ptr 为 %d\n", ptr)   //824633794696
	// 使用指针与不使用指针的区别
	var num1 = 12
	var ptr1 int
	ptr1 = num1
	fmt.Println(ptr1) //12
	num1 = 20
	fmt.Println(ptr1) //12
	var num2 = 12
	var ptr2 *int
	ptr2 = &num2
	fmt.Println(*ptr2) //12
	num2 = 20
	fmt.Println(*ptr2) //20
}

# 运算符优先级

优先级运算符
5* / % << >> & &^
4+ -^
3== != < <= > >=
2&&
1||
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Jalen Chu 微信支付

微信支付

Jalen Chu 支付宝

支付宝

Jalen Chu 公众号

公众号