PHPer的Go之路 -- 条件循环语句(go gopher)

网友投稿 640 2022-08-31

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小时内删除侵权内容。

上一篇:linux环境下配置通过ssh keys连通github跟ssh-agent
下一篇:Atan2
相关文章

 发表评论

暂时没有评论,来抢沙发吧~