第四课 go语言基础-运算符

第四课 go语言基础-运算符

tags:

  • golang
  • 2019尚硅谷

categories:

  • golang
  • 运算符

文章目录

  • 第四课 go语言基础-运算符
    • 第一节 go语言的运算符
    • 第二节 go语言算数运算符
    • 第三节 go语言关系运算符
    • 第四节 go语言逻辑运算符
    • 第五节 go语言赋值运算符
    • 第六节 go语言位运算符
    • 第七节 其他运算符
    • 第八节 go语言运算符优先级

第一节 go语言的运算符

  1. 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
    • 算术运算符
    • 赋值运算符
    • 比较运算符
    • 逻辑运算符
    • 位运算符
    • 其它运算符
    • go语言中没有三元运算符

第二节 go语言算数运算符

算术运算符是对数值类型的变量进行运算的,比如:加减乘除。在Go程序中使用的非常多
第四课 go语言基础-运算符_第1张图片
算数运算符细节总结

  1. 对于除号"/",它的整数除和小数除是有区别的.
    • 整数之间做除法时,只保留整数部分而舍弃小数部分。例如: x:=10 / 3,结果是 3
  2. 当对一个数取模时,可以等价a%b=a-a/b*b(最后结果符号跟被除数相同),这样我们可以看到取模的一个本质运算。
  3. Golang的 自增自减只能当做-一个独立语言使用时,不能这样使用b=a++或者 b:= a++或者if a++ > 0
  4. Golang 的**++和–只能写在变量的后面**,不能写在变量的前面,即:只有a++和a–,没有++a和–a
  5. Golang的设计者去掉c或者 java中的自增自诚的容易混淆的写法,让Golang更加简洁统一。(强制性的)
package main
import "fmt"

// golang 中运算符的使用 重点 除法 取模 自增自减
func main() {
	// 说明参与运算的都是整数,除法后会截取掉小数点部分保留整数部分
	fmt.Println(10 / 4) //2
	var n1 float32 = 10 / 4 //2
	fmt.Println(n1)
	// 如果希望保留小数部分,需要有浮点数参与运算
	var n2 float32 = 10.0 / 4 //2.5
	fmt.Println(n2)
	
	// 取模 % 符号和被除数的符号一致
	fmt.Println(10 % 3)
	fmt.Println(-10 % 3)
	fmt.Println(10 % -3)
	fmt.Println(-10 % -3)

	// 自增和自减
	var i int = 10;
	i++ // i + 1
	fmt.Println(i) 
	i-- // i - 1
	fmt.Println(i)
	
	//在golang中++和--只能独立使用,不能赋值,不能赋值后比较
	//var a int;
	//a = i++ 会报错
	//if i++ > 0 {} 也会报错
	// ++i ++和-- 不能写在前面
}

第三节 go语言关系运算符

关系运算符的结果都是bool型,也就是要么是true,要么是false
关系表达式经常用在if结构的条件中或循环结构的条件中
第四课 go语言基础-运算符_第2张图片

关系运算符总结:

  1. 关系运算符的结果都是bool型,也就是要么是true,要么是false.
  2. 关系运算符组成的表达式,我们称为关系表达式: a>b
  3. 比较运算符"=="不能误写成 "="

第四节 go语言逻辑运算符

用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一-个bool值。
第四课 go语言基础-运算符_第3张图片

注意事项和细节说明

  1. &&也叫短路与: 如果第一个条件为false, 则第二个条件不会判断,最终结果为false
  2. ||也叫短路或。如果第-一个条件为true, 则第二个条件不会判断,最终结果为true
package main
import "fmt"

// 声明一个测试函数
func test() bool {
	fmt.Println("test...")
	return true
}


func main() {
	// golang 中关系运算符的 逻辑与和逻辑或
	var  i int = 10 
	if i > 20 && test(){
		// 这里根本不会执行test中的函数 短路与
		// 第一个条件为false, 结果为false.不执行test.和if中语句
		fmt.Println("ok与")
	}
	if  i > 1 || test() {
		// 这里根本不会执行test中的函数 短路或
		// 第一个条件为true 结果为true 不执行test 执行if语句
		fmt.Println("ok或")
	}
}

第五节 go语言赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量。
普通的赋值运算符
第四课 go语言基础-运算符_第4张图片
涉及到二进制相关的赋值运算
第四课 go语言基础-运算符_第5张图片
赋值运算符特点

  1. 运算顺序从右往左
  2. 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值

面试题:有两个变量,a和b, 要求将其进行交换,但是不允许使用中间变量,最终打印结果

package main
import "fmt"


func main() {
	var a int = 10
	var b int = 9

	a = a + b
	b = a - b
	a = a - b
	fmt.Printf("a的值%d, b的值%d \n", a, b)
}

第六节 go语言位运算符

第四课 go语言基础-运算符_第6张图片

第七节 其他运算符

在这里插入图片描述

package main
import "fmt"

// golang 中其他运算符
func main() {
	a := 100
	fmt.Println("a 指向的地址是:", &a)

	var ptr *int = &a
	fmt.Println("ptr 指向的值是: ", *ptr)
}

第八节 go语言运算符优先级

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上
    一行运算符总优先于下一行。
  2. 只有单目运算符、赋值运算符是从右向左运算的。
  3. 大致的顺序整理
    1. 括号,-- , ++
    2. 单目运算
    3. 算术运算符
    4. 移位运算
    5. 关系运算符
    6. 位运算符
    7. 逻辑运算符
    8. 赋值运算符
    9. 逗号
      第四课 go语言基础-运算符_第7张图片
  4. 大致的顺序整理
    1. 括号,-- , ++
    2. 单目运算
    3. 算术运算符
    4. 移位运算
    5. 关系运算符
    6. 位运算符
    7. 逻辑运算符
    8. 赋值运算符
    9. 逗号

你可能感兴趣的:(go语言基础)