一、内置运算符
算数运算符
Go 语言中的算数运算符包含了 +、-、*、/、\%(取余),与其他语言中的算数运算符并无太大差异
func main(){
fmt.Println("1+2 =",1+2)
fmt.Println("3-2 =",3-2)
fmt.Println("4*5 =", 4*5)
fmt.Println("10/3 =", 10 / 3)
fmt.Println("10/3 =", 10 / 3.0)
fmt.Println("10%3 =", 10 % 3)
}
执行上述代码,输出结果如下:
1+2 = 3
3-2 = 1
4*5 = 20
10/3 = 3
10/3 = 3.3333333333333335
10%3 = 1
在进行除法运算时,如果都是整数进行除法运算,默认输出的结果也是整数,想要输出精确的浮点数则可以将其中一个整数改成浮点数即可。
除了上面五中运算符之外,Go 中还包含了 ++ 和 --,在 for 循环遍历时会经常用到。
关系运算符
关系运算符用于比较两个变量包含的值是否相等,返回值为 True 或者 False,包含了 ==, !=, >, >=, <, <=
func main(){
var a int = 0
var b int = 1
var c string = "hello"
var d string = "hello"
fmt.Println(b == 1.0)
fmt.Println(b == 1)
fmt.Println(a > b)
fmt.Println(c == d)
fmt.Println(c > d)
fmt.Println(c > "hallo")
}
执行上述代码,输出结果如下:
true
true
false
true
false
true
基本数据类型比较的都是值,字符串之间比较时会逐个比较字符串中的字符,一旦比较出结果就返回,对于array、slice、map、struct等类型,当比较两个值是否相等时,是不能使用== 进行比较的
逻辑运算符
Go 中的逻辑运算符包含了 &&, ||, !
| 运算符 | 描述 |
|---|---|
| && | 逻辑 AND 运算符,两边表达式都为 True 时,才会返回 True,否则返回 False |
| || | 逻辑 OR 运算符,两边表达式有一个为 True 时,就会返回 True,否则返回 False |
| ! | 逻辑 NOT 运算符,如果条件为 True,则为 False |
func main(){
var age int = 18
fmt.Println(age > 10 && age < 20)
fmt.Println(age > 10 || age < 0)
fmt.Println(!(age > 10))
}
执行上述代码,输出结果如下:
true
true
false
赋值运算符
Go 中也支持 += 运算符,既相加后在赋值,类似的还有 -=, *=, /=, %=
二、条件循环
if else 条件判断
if else 条件判断语句的基本写法
if 表达式 {
// 代码块
} else if 表达式 {
// 代码块
} else {
}
func main(){
score := 59
if score > 90 {
fmt.Println("优秀Plus")
} else if score > 80 {
fmt.Println("优秀")
} else if score > 70 {
fmt.Println("良好")
} else if score > 60 {
fmt.Println("及格")
} else if score > 0{
fmt.Println("不及格")
} else {
fmt.Println("输入有误")
}
}
Go 中通过 {} 来表示 if 语句的代码块,其中起始的 { 一定要和 if 在同一行,不可以另起一行,否则会报错。
Go 中的 if 表达式支持在 if 关键字后添加执行语句,但是要注意的是这里定义的 score 就相当于一个局部变量,只能够在 if 代码块中使用,其他地方使用会报错。
func main(){
if score := 59; score > 90 {
fmt.Println("优秀Plus")
} else if score > 80 {
fmt.Println("优秀")
} else if score > 70 {
fmt.Println("良好")
} else if score > 60 {
fmt.Println("及格")
} else if score > 0{
fmt.Println("不及格")
} else {
fmt.Println("输入有误")
}
}
for 循环
for 循环可以用于遍历数组、切片或者字典中的元素
func main(){
var scores []int = []int{60, 70, 77, 80, 73}
for i := 0; i < len(scores); i++ {
fmt.Println(scores[i])
}
}
执行上述代码,输出结果如下:
60
70
77
80
73
for 循环实现 while 循环
Go 中是没有 while 语句的,可以使用 for 循环来代替 while 循环
func main(){
for {
fmt.Println("Hello")
}
}
也可以在 for 关键字后添加条件表达式。
for range 循环
for range 遍历字典
func main(){
var info = map[string]string{
"name": "tony",
"age": "18",
}
for k, v := range info {
fmt.Println(k, v)
}
}
执行上述代码,输出结果如下:
name tony
age 18
switch 语句
使用 switch 关键字可以很方便的对大量的 值 进行条件判断。
func main(){
season := "春天"
switch season {
case "春天":
fmt.Println("春天来了")
case "夏天":
fmt.Println("夏天来了")
case "秋天":
fmt.Println("秋天来了")
case "冬天":
fmt.Println("冬天来了")
}
}
break、continue 关键字
类似其他语言,Go 中也可以使用 break 关键字和 continue 关键字
break 跳出循环(结束循环)
func main(){
x := 1
for {
if x == 3 {
break
}
x++
fmt.Println(x)
}
}
执行上述代码,输出结果如下:
2
3
continue 跳出当前循环,继续下一次循环
func main(){
for i := 0; i < 10; i++ {
if i % 2 == 0 {
continue
}
fmt.Println(i)
}
}
执行上述代码,输出结果如下:
1
3
5
7
9