个人网站:
http://hardyfish.top/
免费书籍分享:
资料链接:https://url81.ctfile.com/d/57345181-61545511-81795b?p=3899
访问密码:3899
免费专栏分享:
资料链接:https://url81.ctfile.com/d/57345181-61616236-5d1496?p=3899
访问密码:3899
if条件语句
if 语句是条件语句,它根据布尔值的表达式来决定选择哪个分支执行:
如果表达式的值为 true,则 if 分支被执行;如果表达式的值为 false,则 else 分支被执行。
func main() {
i:=10
if i >10 {
fmt.Println("i>10")
} else {
fmt.Println("i<=10")
}
}
关于 if 条件语句的使用有一些规则:
- if 后面的条件表达式不需要使用 (),这和有些编程语言不一样,也更体现 Go 语言的简洁;
- 每个条件分支(if 或者 else)中的大括号是必须的,哪怕大括号里只有一行代码(如示例);
- if 紧跟的大括号 { 不能独占一行,else 前的大括号 } 也不能独占一行,否则会编译不通过;
- 在 if……else 条件语句中还可以增加多个 else if,增加更多的条件分支。
func main() {
i:=6
if i >10 {
fmt.Println("i>10")
} else if i>5 && i<=10 {
fmt.Println("5<i<=10")
} else {
fmt.Println("i<=5")
}
}
和其他编程语言不同,在 Go 语言的 if 语句中,可以有一个简单的表达式语句,并将该语句和条件语句使用分号 ; 分开。
func main() {
if i:=6; i >10 {
fmt.Println("i>10")
} else if i>5 && i<=10 {
fmt.Println("5<i<=10")
} else {
fmt.Println("i<=5")
}
}
在 if 关键字之后,i>10 条件语句之前,通过分号 ; 分隔被初始化的 i:=6。
这个简单语句主要用来在 if 条件判断之前做一些初始化工作,可以发现输出结果是一样的。
switch选择语句
switch i:=6;{
case i>10:
fmt.Println("i>10")
case i>5 && i<=10:
fmt.Println("5<i<=10")
default:
fmt.Println("i<=5")
}
switch 语句同样也可以用一个简单的语句来做初始化,同样也是用分号 ; 分隔。
每一个 case 就是一个分支,分支条件为 true 该分支才会执行,而且 case 分支后的条件表达式也不用小括号 () 包裹。
在 Go 语言中,switch 的 case 从上到下逐一进行判断,一旦满足条件,立即执行对应的分支并返回,其余分支不再做判断。
也就是说 Go 语言的 switch 在默认情况下,case 最后自带 break。
这和其他编程语言不一样,比如 C 语言在 case 分支里必须要有明确的 break 才能退出一个 case。
Go 语言的这种设计就是为了防止忘记写 break 时,下一个 case 被执行。
那么如果你真的有需要,的确需要执行下一个紧跟的 case 怎么办呢?
Go 语言也考虑到了,提供了 fallthrough 关键字。现在看个例子,如下面的代码所示:
switch j:=1;j {
case 1:
fallthrough
case 2:
fmt.Println("1")
default:
fmt.Println("没有匹配")
}
以上示例运行会输出 1,如果省略 case 1: 后面的 fallthrough,则不会有任何输出。
当 switch 之后有表达式时,case 后的值就要和这个表达式的结果类型相同,比如这里的 j 是 int 类型,那么 case 后就只能使用 int 类型,如示例中的 case 1、case 2。
如果是其他类型,比如使用 case “a” ,会提示类型不匹配,无法编译通过。
而对于 switch 后省略表达式的情况,整个 switch 结构就和 if……else 条件语句等同了。
switch 后的表达式也没有太多限制,是一个合法的表达式即可,也不用一定要求是常量或者整数。
你甚至可以像如下代码一样,直接把比较表达式放在 switch 之后:
switch 2>1 {
case true:
fmt.Println("2>1")
case false:
fmt.Println("2<=1")
}
for循环语句
sum:=0
for i:=1;i<=100;i++ {
sum+=i
}
fmt.Println("the sum is",sum)
其中:
- 第一部分是一个简单语句,一般用于 for 循环的初始化,比如这里声明了一个变量,并对 i:=1 初始化;
- 第二部分是 for 循环的条件,也就是说,它表示 for 循环什么时候结束。这里的条件是 i<=100;
- 第三部分是更新语句,一般用于更新循环的变量,比如这里 i++,这样才能达到递增循环的目的。
sum:=0
i:=1
for i<=100 {
sum+=i
i++
}
fmt.Println("the sum is",sum)
这个示例和上面的 for 示例的效果是一样的,但是这里的 for 后只有 i<=100 这一个条件语句,也就是说,它达到了 while 的效果。
在 Go 语言中,同样支持使用 continue、break 控制 for 循环:
- continue 可以跳出本次循环,继续执行下一个循环。
- break 可以跳出整个 for 循环,哪怕 for 循环没有执行完,也会强制终止。
sum:=0
i:=1
for {
sum+=i
i++
if i>100 {
break
}
}
fmt.Println("the sum is",sum)