Go-05 Golang中的运算符

package main

import "fmt"

/*	Golang 中的运算符
	Golang内置的运算符:
	1. 算术运算符:+ - * / %
	2. 关系运算符:!=  ==  >  >=  <  <=	返回值是True或者False
	3. 逻辑运算符:&& || !(逻辑NOT运算符,表示条件取反)	返回值是True或者False
	4. 赋值运算符:= += -= *= /= %=
	5. 位运算符(了解):位运算符对整数在内存中的二进制位进行操作。
	注意:++(自增)和 --(自减)在Go语言中是单独的语句,并不是运算符。
*/

func test() bool {
	fmt.Println("test......test......")
	return true
}

func main() {
	// 1. 算数运算
	fmt.Println("10+3=", 10+3) // 10+3= 13
	fmt.Println("10-3=", 10-3) // 10-3= 7
	fmt.Println("10*3=", 10*3) //	10*3= 30
	// 除法运算注意:如果运算的数都是整数,那么除后,会去掉小数部分,保留整数部分。
	fmt.Println("10/3=", 10/3)     //	10/3= 3
	fmt.Println("10.0/3=", 10.0/3) //	10.0/3= 3.3333333333333335
	fmt.Println("10%3=", 10%3)     //	10%3= 1
	fmt.Println("-10%3=", -10%3)   //	-10%3= -1
	fmt.Println("10%-3=", 10%-3)   //	10%-3= 1
	fmt.Println("-10%-3=", -10%-3) //	-10%-3= -1
	fmt.Println()
	// 1.1 ++ 和 -- 的错误使用方法如下
	// 错误使用方式1:
	//var i int = 8
	//var a int
	//a = i++	//直接报错,i++ 只能单独i自己使用
	//a = i--	//直接报错,i-- 只能单独i自己使用
	// 错误使用方式2:
	//var i int = 8
	//++i	//	错误,在golang中没有 前++
	//--i	//  错误,在golang中没有 前--
	// ++ 和 -- 的正确使用方式
	var i int = 1
	i++
	fmt.Println("输出i=", i) // i= 2
	// 2.关系运算,返回值为True或者False
	// 演示关系运算符的使用
	var n1 int = 9
	var n2 int = 8
	fmt.Println(n1 == n2) // false
	fmt.Println(n1 != n2) // true
	fmt.Println(n1 > n2)  // true
	fmt.Println(n1 >= n2) // true
	fmt.Println(n1 < n2)  // false
	fmt.Println(n1 <= n2) // false
	tag := n1 > n2
	fmt.Println("tag=", tag) // tag= true
	// 3.逻辑运算符,&& || !
	// 3.1 && 逻辑AND运算符。如果两边的操作数都是True,则为True,否则为False。
	var age int = 40
	if age > 30 && age < 50 {
		fmt.Println("OK1") // 这个条件满足,它会打印
	}
	if age > 30 && age < 40 {
		fmt.Println("OK2") // 这个条件不满足,它不会被打印
	}
	// 3.2 || 逻辑OR运算符。如果两边的操作数有一个True,则为True,否则为False。
	if age > 30 || age < 50 {
		fmt.Println("OK3") // 这个条件满足,它会打印
	}
	if age > 30 || age < 40 {
		fmt.Println("OK4") // 这个条件满足,它会打印
	}
	if age > 50 || age < 40 {
		fmt.Println("OK5") // 这个条件不满足,它不会被打印
	}
	// 3.3  ! 逻辑NOT运算符。如果条件为True,取反后则为False,如果条件为False,取反后则为True。
	// 演示一下逻辑运算符 ! 的使用
	if age > 30 {
		fmt.Println("OK6") // 这个条件满足,它会打印
	}
	if !(age > 50) {
		// age的值是40,age > 50,这个条件不成立。前面加上!表示if条件取反
		// 这个条件不成立,返回值为False,前面加上!表示if条件取反,条件就会成立(加上!真实条件就变成了age < 50)
		fmt.Println("OK7") // 这个条件满足,它会打印
	}
	// 逻辑运算符短路演示
	var is int = 10
	if is < 9 && test() {
		fmt.Println("...ok...ok...")
	}
	if is > 9 || test() {
		fmt.Println("...hello...true...le...") // 这个条件满足,它会打印
	}
	// 4. 赋值运算符
	/*	赋值运算符
		赋值运算从右向左。
		1. = 简单的赋值运算符,将一个表达式的值赋值给一个左值
		2. += 相加后再赋值
		3. -= 相减后再赋值
		4. *= 相乘后再赋值
		5. /= 相处后再赋值
		6. %= 求余后再赋值
	*/
	dd := 8 + 2*8   // 赋值运算从右向左
	fmt.Println(dd) // 24
	x, y, z, n, k := 10, 200, 100, 30, 25
	x += 5                           // 相同于 x=x+5
	fmt.Println("x += 5 的值是:", x) // x += 5 的值是: 15
	y -= 5                           // 相同于 y=y-5
	fmt.Println("y -= 5 的值是:", y) // y -= 5 的值是: 195
	z *= 5                           // 相同于 z=z*5
	fmt.Println("z *= 5 的值是:", z) // z *= 5 的值是: 500
	n /= 5                           // 相同于 n=n/5
	fmt.Println("n /= 5 的值是:", n) // n /= 5 的值是: 6
	k %= 5                           // 相同于 k=k%5
	fmt.Println("k %= 5 的值是:", k) // k %= 5 的值是: 0
	// 5.运算符练习
	// 练习1:有两个变量,aaa和bbb,要求将其进行交换,最终打印结果
	aaa := 9
	bbb := 2
	ttt := aaa
	aaa = bbb
	bbb = ttt
	fmt.Printf("交换后的情况是 aaa=%v, bbb=%v \n", aaa, bbb) // 交换后的情况是 aaa=2, bbb=9
	// 练习2:假如还有100天放假,问:还有xx个星期零xx天
	var days int = 100
	var week int = days / 7
	var day int = days % 7
	fmt.Printf("距离放假目前还有 %d 个星期,零%d 天\n", week, day) // 距离放假目前还有 14 个星期,零2 天

	/*	上面代码的全部打印结果如下所示:
		PS C:\Users\Zhaoshan.lu\go\DaDi> go run .\07.go
		10+3= 13
		10-3= 7
		10*3= 30
		10/3= 3
		10.0/3= 3.3333333333333335
		10%3= 1
		-10%3= -1
		10%-3= 1
		-10%-3= -1

		输出i= 2
		false
		true
		true
		tag= true
		OK1
		OK3
		OK4
		OK6
		OK7
		...hello...true...le...
		24
		x += 5 的值是: 15
		y -= 5 的值是: 195
		z *= 5 的值是: 500
		n /= 5 的值是: 6
		k %= 5 的值是: 0
		交换后的情况是 aaa=2, bbb=9
		距离放假目前还有 14 个星期,零2 天
		PS C:\Users\Zhaoshan.lu\go\DaDi>

	*/
}




posted @ 2022-12-01 09:13  大海一个人听  阅读(106)  评论(0编辑  收藏  举报