Golang - 运算符


算数运算符

package main

import "fmt"

func main() {
	a := 19
	b := 3

	// 加减乘除
	fmt.Printf("加法: %d + %d = %d\n", a, b, a+b)  // 加, 结果为
	fmt.Printf("减法: %d - %d = %d\n", a, b, a-b)  // 减
	fmt.Printf("乘法: %d * %d = %d\n", a, b, a*b)  // 乘
	fmt.Printf("除法: %d / %d = %d\n", a, b, a/b)  // 除
	fmt.Printf("取余: %d %% %d = %d\n", a, b, a%b) // 取余

	// 自增
	a++
	fmt.Println(a)

	// 自减
	b--
	fmt.Println(b)
}


关系运算符

package main

import "fmt"

func main() {
	a := 19
	b := 3

	// 等于和不等于
	if a == b {
		fmt.Println("a = b")
	} else if a != b {
		fmt.Println("a != b")
	}

	// 大于/小于/等于
	if a > b {
		fmt.Println("a > b")
	} else if a <= b {
		fmt.Println("a <= b")
	}
}


逻辑运算符

package main

import "fmt"

func main() {
	
	// bool的逻辑运算
	m := true
	n := false
	
	fmt.Println(m && n) // 与运算, 都为真, 才为真
	fmt.Println(m || n) // 或运算, 有真, 就为真
	fmt.Println(!m)     // 非运算, 取反
	
	// 数字的逻辑运算, 通过二进制来计算结果
	x := 10 // 1010
	y := 7  // 0111

	fmt.Printf("%b, %b\n", x, y)
	fmt.Println(x & y) // 对位都为1, 才为1, 所以结果为: 0010

	fmt.Println(x | y) // 对位有1, 就为1, 所以结果为: 1111

	fmt.Println(x ^ y) // 对位不同, 则为1, 所以结果为: 1101
}


位运算符

package main

import "fmt"

func main() {
	// 对整数在内存中的二进制位进行操作

	p1 := 3
	p2 := p1 << 10 // 先将p1转成二进制的11, 再左移10位
	fmt.Printf("%[1]d, %[1]b, %[2]b, %[2]d\n", p1, p2) // 3, 11, 110000000000, 3072

	p3 := p1 >> 1 // 右移如果超过边界, 则忽略不计
	fmt.Printf("%[1]d, %[1]b, %[2]b, %[2]d\n", p1, p3) // 3, 11, 1, 1
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章