PHPer的Go之路 -- 条件循环语句(go gopher)
PHPer的Go之路 -- 条件循环语句(go gopher)
Go的if和php不同之处在于以下几点:
条件语句不需要使用圆括号将条件包含起来 ();
无论语句体内有几条语句,花括号 {} 都是必须存在的;
左花括号 { 必须与 if 或者 else 处于同一行;
Go中不能写成elseif,只有else if(需要分开)
栗子:
package main
import "fmt"
func main() {
/* 定义局部变量 */
var a int = 300
var b int = 200
/* 判断条件 */
if a == 100 {
fmt.Printf("a 值为 : %d\n", a );
}else if b == 200 {
fmt.Printf("b 值为 : %d\n", b );
}else {
fmt.Printf("都不对 \n", );
}
}
switch…case…
switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用 fallthrough 。使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。
package main
import "fmt"
func main() {
score := 85
//条件型
switch {
case score >= 90:
fmt.Println("级别: A")
case score >= 80 && score < 90:
fmt.Println("级别: B")
case score >= 70 && score < 80:
fmt.Println("级别: C")
case score >= 60 && score < 70:
fmt.Println("级别: D")
default:
fmt.Println("级别: F")
}
//等值
switch score {
case 80, 90:
fmt.Println("值可能为80或者90")
case 85:
//执行下一条
fallthrough
case 50:
fmt.Println("必须执行")
default:
fmt.Println("默认执行")
}
}
注意:
和条件语句一样,左花括号 { 必须与 switch 处于同一行;
单个 case 中,可以出现多个结果选项(通过逗号分隔);
与其它语言不同,Go 语言不需要用 break 来明确退出一个 case;
只有在 case 中明确添加 fallthrough 关键字,才会继续执行紧跟的下一个 case;
可以不设定 switch 之后的条件表达式,在这种情况下,整个 switch 结构与多个 if…else… 的逻辑作用等同。
for循环
for 循环是一个循环控制结构,可以执行指定次数的循环。
a
a := 0;
for i := a; i <= 10; i++ {
a += i
}
fmt.Printf("a : %d\n", a)
sum := 1
// sun小于等于10就累加,这样写也可以,更像 While 语句形式
for sum <= 10 {
sum += sum
}
fmt.Printf("sum : %d\n", sum)
numbers := [6]int{1, 2, 3, 5}
for i,x:= range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
}
//死循环
/*for {
sum++ // 无限循环下去
}*/
注意:
和条件语句、分支语句一样,左花括号 { 必须与 for 处于同一行;
不支持 whie 和 do-while 结构的循环语句;
可以通过 for-range 结构对可迭代集合进行遍历;
支持基于条件判断进行循环迭代;
与 PHP 一样,都允许在循环条件中定义和初始化变量,且支持多重赋值;
Go 语言的 for 循环同样支持 continue 和 break 来控制循环。
break 与 continue
和 PHP 一样,Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。
Go 语言的 break 和 contine 与 PHP 的不同之处在于支持与标签结合跳转到指定的标签语句,从而改变这两个语句的默认跳转逻辑,标签语句通过标签+「:」进行声明:
a := 0;
for i := a; i <= 10; i++ {
a += i
}
fmt.Printf("a : %d\n", a)
sum := 1
// sun小于等于10就累加,这样写也可以,更像 While 语句形式
for sum <= 10 {
sum += sum
}
fmt.Printf("sum : %d\n", sum)
numbers := [6]int{1, 2, 3, 5}
for i,x:= range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
}
//死循环
/*for {
sum++ // 无限循环下去
}*/
goto
goto 语句的语义非常简单,就是跳转到本函数内的某个标签
注意:
和条件语句一样,左花括号 { 必须与 switch 处于同一行;
单个 case 中,可以出现多个结果选项(通过逗号分隔);
与其它语言不同,Go 语言不需要用 break 来明确退出一个 case;
只有在 case 中明确添加 fallthrough 关键字,才会继续执行紧跟的下一个 case;
可以不设定 switch 之后的条件表达式,在这种情况下,整个 switch 结构与多个 if…else… 的逻辑作用等同。
for循环
for 循环是一个循环控制结构,可以执行指定次数的循环。
a := 0;
for i := a; i <= 10; i++ {
a += i
}
fmt.Printf("a : %d\n", a)
sum := 1
// sun小于等于10就累加,这样写也可以,更像 While 语句形式
for sum <= 10 {
sum += sum
}
fmt.Printf("sum : %d\n", sum)
numbers := [6]int{1, 2, 3, 5}
for i,x:= range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
}
//死循环
/*for {
sum++ // 无限循环下去
}*/
注意:
和条件语句、分支语句一样,左花括号 { 必须与 for 处于同一行;
不支持 whie 和 do-while 结构的循环语句;
可以通过 for-range 结构对可迭代集合进行遍历;
支持基于条件判断进行循环迭代;
与 PHP 一样,都允许在循环条件中定义和初始化变量,且支持多重赋值;
Go 语言的 for 循环同样支持 continue 和 break 来控制循环。
break 与 continue
和 PHP 一样,Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。
Go 语言的 break 和 contine 与 PHP 的不同之处在于支持与标签结合跳转到指定的标签语句,从而改变这两个语句的默认跳转逻辑,标签语句通过标签+「:」进行声明:
func bcTest() {
arr := [][]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
ITERATOR1:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
num := arr[i][j]
if j > 2 {
break ITERATOR1
}else if num == 2 {
continue
}
fmt.Println(num)
}
}
}
goto
goto 语句的语义非常简单,就是跳转到本函数内的某个标签
arr := [][]int{{1,2,3},{4,5,6},{7,8,9}}
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
num := arr[i][j]
if j > 1 {
goto EXIT
}
fmt.Println(num)
}
EXIT:
fmt.Println("Exit.")
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~