Go语言基础之运算符和流程控制

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语句。在实际编程中,我们应该选择最合适的运算符和流程控制结构来完成特定的任务,同时避免滥用复杂的编程技巧,以提高程序的可读性和可维护性。

后端开发标签