第四课 go语言基础-运算符
tags:
- golang
- 2019尚硅谷
categories:
- golang
- 运算符
文章目录
第一节 go语言的运算符
- 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 其它运算符
- go语言中没有三元运算符
第二节 go语言算数运算符
算术运算符是对数值类型的变量进行运算的,比如:加减乘除。在Go程序中使用的非常多
算数运算符细节总结:
- 对于除号"/",它的整数除和小数除是有区别的.
- 整数之间做除法时,只保留整数部分而舍弃小数部分。例如: x:=10 / 3,结果是 3
- 当对一个数取模时,可以等价a%b=a-a/b*b(最后结果符号跟被除数相同),这样我们可以看到取模的一个本质运算。
- Golang的 自增自减只能当做-一个独立语言使用时,不能这样使用b=a++或者 b:= a++或者if a++ > 0
- Golang 的**++和–只能写在变量的后面**,不能写在变量的前面,即:只有a++和a–,没有++a和–a
- 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结构的条件中或循环结构的条件中
关系运算符总结:
- 关系运算符的结果都是bool型,也就是要么是true,要么是false.
- 关系运算符组成的表达式,我们称为关系表达式: a>b
- 比较运算符"=="不能误写成 "="
第四节 go语言逻辑运算符
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一-个bool值。
注意事项和细节说明
- &&也叫短路与: 如果第一个条件为false, 则第二个条件不会判断,最终结果为false
- ||也叫短路或。如果第-一个条件为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语言赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。
普通的赋值运算符
涉及到二进制相关的赋值运算
赋值运算符特点
- 运算顺序从右往左
- 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
面试题:有两个变量,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语言位运算符
第七节 其他运算符
package main
import "fmt"
// golang 中其他运算符
func main() {
a := 100
fmt.Println("a 指向的地址是:", &a)
var ptr *int = &a
fmt.Println("ptr 指向的值是: ", *ptr)
}
第八节 go语言运算符优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上
一行运算符总优先于下一行。 - 只有单目运算符、赋值运算符是从右向左运算的。
- 大致的顺序整理
- 括号,-- , ++
- 单目运算
- 算术运算符
- 移位运算
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 逗号
- 大致的顺序整理
- 括号,-- , ++
- 单目运算
- 算术运算符
- 移位运算
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 逗号