1. 运算符
1.1 算术运算符
算术运算符包括加减乘除以及求余等,其中求余运算符用%表示。运算符的优先级从高到低,分别为:
1. 一元运算符:+(正号)、-(负号)
2. 乘法运算符:*、/、%
3. 加法运算符:+、-
Go语言中的运算符与其他语言的不同之处在于:
1. 除法操作符/根据操作数的类型不同,会有不同的行为:
* 两个整数相除,会得到一个整数结果,直接截去小数部分;
* 两个浮点数相除,会得到一个浮点数结果;
* 一个整数和一个浮点数相除,会得到一个浮点数结果。
2. 如果两个操作数都是整数类型,则结果也是整数类型。例如:
a := 7 / 2
fmt.Println(a) // 输出 3
如果我们想要得到小数结果,需要将其中一个操作数转为浮点数:
a := 7.0 / 2
fmt.Println(a) // 输出 3.5
1.2 比较运算符
比较运算符包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)以及小于等于(<=)。比较运算符的结果是布尔类型(bool),只有true和false两种取值。
注意:Go语言中不能使用等于号(=)作为比较运算符,因为等于号在Go语言中是用于赋值的符号。
1.3 逻辑运算符
逻辑运算符用于连接布尔表达式,包括逻辑与(&&)、逻辑或(||)以及逻辑非(!)。逻辑与和逻辑或是短路运算符,即如果第一个条件不满足,后面的条件将不再进行计算,这也符合逻辑上的真实情况。
2. 流程控制
2.1 if-else语句
if语句用于条件判断,语法结构为:
if 判断条件 {
// 条件成立,执行该代码块
} else {
// 条件不成立,执行该代码块
}
其中else是可选的,如果条件成立,将会执行if后面的代码块,否则将会执行else后面的代码块。比如我们来实现一个判断奇偶数的程序:
package main
import "fmt"
func main() {
var num int
fmt.Print("请输入一个数字:")
fmt.Scan(&num)
if num%2 == 0 {
fmt.Println(num, "是偶数")
} else {
fmt.Println(num, "是奇数")
}
}
重点提示: 在Go语言中,if的判断条件中不需要括号。但是为了可读性,一般都会加上。
2.2 for循环
for循环用于遍历数组、切片、映射等数据结构,语法结构为:
for 循环变量 := 初始值; 循环条件; 循环变量的更新 {
// 循环体
}
其中循环变量的初始值可以省略,但是循环条件和循环变量的更新不能省略。以下是一个从1到10输出的程序:
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
}
可以看到,循环体中的代码会在每一次循环时执行一次,直到循环条件不再符合时,跳出循环。
2.3 switch语句
switch语句用于多选一的情况,类似于其他语言中的switch-case结构。语法结构为:
switch 判断条件 {
case 条件1:
// case1代码块
case 条件2:
// case2代码块
...
default:
// 默认的代码块
}
其中判断条件可以是任意类型,case后面的条件也可以是任意类型。Go语言的case语句不需要break语句,当匹配到一个条件成立时,自动跳出switch语句。default语句是可选的,当没有匹配到任何一个条件时,将会执行default代码块。下面是一个根据用户输入的数字打印相应星期几的程序:
package main
import "fmt"
func main() {
var day int
fmt.Print("请输入一个数字:")
fmt.Scan(&day)
switch day {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
case 4:
fmt.Println("星期四")
case 5:
fmt.Println("星期五")
case 6:
fmt.Println("星期六")
case 7:
fmt.Println("星期日")
default:
fmt.Println("输入无效!")
}
}
2.4 goto语句
goto语句用于无条件地跳转到代码中指定的行,虽然goto语句可以在一些特殊情况下方便我们的编程,但是滥用goto语句会使程序的逻辑变得混乱,降低程序的可读性和可维护性。因此,在编写程序时应该尽量避免使用goto语句。以下是一个使用goto语句打印99乘法表的程序,仅供参考:
package main
import "fmt"
func main() {
i, j := 1, 1
Begin:
fmt.Print(i, "*", j, "=", i*j, "\t")
j++
if j > i {
fmt.Println()
i++
j = 1
}
if i <= 9 {
goto Begin
}
}
总结
本文主要介绍了Go语言中的运算符和流程控制结构,其中运算符包括算术运算符、比较运算符和逻辑运算符,流程控制结构包括if-else语句、for循环、switch语句和goto语句。在实际编程中,我们应该选择最合适的运算符和流程控制结构来完成特定的任务,同时避免滥用复杂的编程技巧,以提高程序的可读性和可维护性。