1. 算术运算符
注意: ++(自增)和--(自减)在 Go 语言中是单独的语句,并不是运算符。
package main
import "fmt"
func main() {
fmt.Println("10+3=", 10+3) // 13
fmt.Println("10-3=", 10-3) // 7
fmt.Println("10*3=", 10*3) // 30
// 除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
fmt.Println("10/3=", 10/3) // 3
fmt.Println("10.0/3=", 10.0/3) // 3.3333333333333335
// 取余注意 余数=被除数-(被除数/除数)*除数
fmt.Println("10%3=", 10%3) // 1
fmt.Println("-10%3=", -10%3) // -1
fmt.Println("10%-3=", 10%-3) // 1
fmt.Println("-10%-3=", -10%-3) // -1
}
注意:在 golang 中,++ 和 -- 只能独立使用,错误写法如下:
var i int = 8
var a int
a = i++ //错误,i++只能独立使用
a = i-- //错误, i--只能独立使用
注意:在 golang 中没有前++ 和前--,错误写法如下:
var i int = 1
++i // 错误,在 golang 没有 前++
--i // 错误,在 golang 没有 前--
fmt.Println("i=", i)
2. 关系运算符
示例代码如下:
package main
import "fmt"
func main() {
var a1 = 9
var a2 = 8
fmt.Println(a1 == a2) // false
fmt.Println(a1 != a2) // true
fmt.Println(a1 > a2) // true
fmt.Println(a1 >= a2) // true
fmt.Println(a1 < a2) // flase
fmt.Println(a1 <= a2) // flase
flag := a1 > a2
fmt.Println("flag=", flag) // flag=true
var a3 = 9
var a4 = 14
flag := a3 > a4
if flag {
fmt.Println("a3>a4") // a3>a4
}
var a5 = 9
var a6 = 8
if a5 == a6 {
fmt.Println("a4=a6")
} else {
fmt.Println("a5!=a6") // a5!=a6
}
}
3. 逻辑运算符
package main
import ("fmt")
func main() {
var age int = 40
// 演示逻辑运算符的使用 &&
if age > 30 && age < 50 {
fmt.Println("ok1") // ok1
}
if age > 30 && age < 40 {
fmt.Println("ok2")
}
// 演示逻辑运算符的使用 ||
if age > 30 || age < 50 {
fmt.Println("ok3") // ok3
}
if age > 30 || age < 40 {
fmt.Println("ok4") // ok4
}
// 演示逻辑运算符的使用 !
if age > 30 {
fmt.Println("ok5") // ok5
}
if !(age > 30) {
fmt.Println("ok6")
}
}
逻辑运算符短路演示:
package main
import ( "fmt")
func test() bool {
fmt.Println("test...")
return true
}
func main() {
var i int = 10
if i < 9 && test() {
fmt.Println("ok...")
}
if i > 9 || test() {
fmt.Println("hello...")
}
}
4. 赋值运算符
package main
import "fmt"
func main() {
var a = 10
a += 3
fmt.Println(a) // 13
var b = 10
b -= 3
fmt.Println(b) // 7
var c = 10
c *= 3
fmt.Println(c) // 30
var d = 10
d /= 3
fmt.Println(d) // 3
var e float64 = 10
e /= 3
fmt.Println(e) // 3.3333333333333335
var f = 10
f %= 3
fmt.Println(f) // 1
}
5. 位运算符
位运算符对整数在内存中的二进制位进行操作。
package main
import "fmt"
func main() {
var a int = 5 // 101
var b int = 2 // 010
fmt.Println("a&b=", a&b) // 000 (值 0)
fmt.Println("a|b=", a|b) // 111 (值 7)
fmt.Println("a^b=", a^b) // 111 (值 7)
fmt.Println("5>>2=", a>>b) // 1 (5右移2位)
fmt.Println("5>>1=", 5>>1) // 10 (5右移1位)
fmt.Println("7>>2=", 7>>2) // 1 (7右移1位)
fmt.Println("5<<2=", a<<b) // 10100 (5左移2位)
fmt.Println("5<<1=", 5<<1) // 1010 (5左移1位)
}
6. 运算符练习
1. 练习:有两个变量a和b,要求将其进行交换,最终打印结果。
package main
import "fmt"
func main() {
var a = 34
var b = 10
t := a // t=34
a = b // a=10
b = t // b=34
fmt.Printf("a=%v b=%v", a, b)
}
2. 练习:有两个变量a和b,要求将其进行交换,不能使用中间变量,最终打印结果。
package main
import "fmt"
func main() {
var a = 34
var b = 10
a = a + b // a=34+10 =>44
b = a - b // b=34+10-10=>34
a = a - b // a=(34+10)-(34+10-10)=>10
fmt.Printf("a=%v b=%v", a, b)
}
3. 练习:假如还有100天放假,问:多少个星期零多少天。
package main
import "fmt"
func main() {
var days = 100
var week = days / 7
var day = days % 7
fmt.Printf("距离放假还有%v周零%v天", week, day)
}
4. 练习:定义一个变量保存华氏温度,请求出华氏温度对应的摄氏温度。
华氏温度转换摄氏温度的公式为:C=(F-32)÷1.8,摄氏温标(°C)和华氏温标(°F)
package main
import "fmt"
func main() {
var F float32 = 100 // 华氏温度
C := (F - 32) / 1.8
fmt.Printf("华氏温度对应的摄氏温度是%.2f", C)
}