运算符用于在程序运行时执行数学或逻辑运算。
Go 语言内置的运算符有:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
咱们之间看代码,进行实操
实例
demo1
package main
import (
"fmt"
)
func main() {
//重点讲解 /、%
//说明,如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
fmt.Println(10 / 4)
var n1 float32 = 10 / 4 //
fmt.Println(n1)
//如果我们希望保留小数部分,则需要有浮点数参与运算
var n2 float32 = 10.0 / 4
fmt.Println(n2)
// 演示 % 的使用
// 看一个公式 a % b = a - a / b * b
// fmt.Println("10%3=", 10 % 3) // =1
// fmt.Println("-10%3=", -10 % 3) // = -10 - (-10) / 3 * 3 = -10 - (-9) = -1
// fmt.Println("10%-3=", 10 % -3) // =1
// fmt.Println("-10%-3=", -10 % -3) // =-1
// ++ 和 --的使用
var i int = 10
i++ // 等价 i = i + 1
fmt.Println("i=", i) // 11
i-- // 等价 i = i - 1
fmt.Println("i=", i) // 10
if i > 0 {
fmt.Println("ok")
}
}
demo2
package main
import (
_ "fmt"
)
func main() {
//在golang中,++ 和 -- 只能独立使用.
// var i int = 8
// var a int
// a = i++ //错误,i++只能独立使用
// a = i-- //错误, i--只能独立使用
// if i++ > 0 {
// fmt.Println("ok")
// }
// var i int = 1
// i++
// ++i // 错误,在golang没有 前++
// i--
// --i // 错误,在golang没有 前--
// fmt.Println("i=", i)
}
demo3
package main
import (
"fmt"
)
func main() {
//演示关系运算符的使用
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) //flase
fmt.Println(n1 <= n2) //flase
flag := n1 > n2
fmt.Println("flag=", flag)
}
demo4
package main
import (
"fmt"
)
//声明一个函数(测试)
func test() bool {
fmt.Println("test....")
return true
}
func main() {
var i int = 10
//短路与
//说明 因为 i < 9 为 false ,因此后面的 test() 就不执行
// if i < 9 && test() {
// fmt.Println("ok...")
// }
if i > 9 || test() {
fmt.Println("hello...")
}
/*
//演示逻辑运算符的使用 &&
var age int = 40
if age > 30 && age < 50 {
fmt.Println("ok1")
}
if age > 30 && age < 40 {
fmt.Println("ok2")
}
//演示逻辑运算符的使用 ||
if age > 30 || age < 50 {
fmt.Println("ok3")
}
if age > 30 || age < 40 {
fmt.Println("ok4")
}
//演示逻辑运算符的使用 !
if age > 30 {
fmt.Println("ok5")
}
if !(age > 30) {
fmt.Println("ok6")
} */
}
demo5
package main
import (
"fmt"
)
func test() int {
return 90
}
func main() {
//赋值运算符的使用演示
// var i int
// i = 10 //基本赋值
//有两个变量,a和b,要求将其进行交换,最终打印结果
// a = 9 , b = 2 ==> a = 2 b = 9
a := 9
b := 2
fmt.Printf("交换前的情况是 a = %v , b=%v \n", a, b)
//定义一个临时变量
t := a
a = b //
b = t //
fmt.Printf("交换后的情况是 a = %v , b=%v \n", a, b)
//复合赋值的操作
a += 17 // 等价 a = a + 17
fmt.Println("a=", a)
var c int
c = a + 3 // 赋值运算的执行顺序是从右向左
fmt.Println(c)
//2)赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
// 表达式:任何有值都可以看做表达式
var d int
d = a //
d = 8 + 2 * 8 // =的右边是表达式
d = test() + 90 // =的右边是表达式
//d = 890 // 890常量
fmt.Println(d)
}
demo6
package main
import (
"fmt"
)
func main() {
//演示一把 & 和 *的使用
a := 100
fmt.Println("a 的地址=", &a)
var ptr *int = &a
fmt.Println("ptr 指向的值是=", *ptr)
var n int
var i int = 10
var j int = 12
//传统的三元运算
//n = i > j ? i : j
if i > j {
n = i
} else {
n = j
}
fmt.Println("n=", n) // 12
}
demo7
package main
import (
"fmt"
)
func main() {
var i int = 5
//二进制输出
fmt.Printf("%b \n", i)
//八进制:0-7 ,满8进1. 以数字0开头表示
var j int = 011 // 011=> 9
fmt.Println("j=", j)
//0-9及A-F,满16进1. 以0x或0X开头表示
var k int = 0x11 // 0x11=> 16 + 1 = 17
fmt.Println("k=", k)
}