go语言的魔幻旅程03-控制结构

他强任他强,清风拂山岗,他横由他横,明月照大江

倚天不出,谁与争锋,时间的车轮穷无声息已经挥别数载,原著作者金庸老先生早已经驾鹤西去,但其作品小说“飞雪连天射白鹿,笑书神侠倚碧鸳”不时回荡人间,虽然其中的大部分文学著作学生时代并没有认真研读过,但是根据小说翻拍的电视剧版本大多有所涉猎,这其中又以《倚天屠龙记》作为喜爱,翻拍的几个版本中自我认为吴启华版本最为传神,人物形象可谓是饰演的形神兼备,尤其是主人公张无忌从一个手无缚鸡之力的文弱少年,一举成为成为光明顶上力压六大派救明教于水火的顶流高手,可谓是热血沸腾。他强任他强,清风拂山岗,他横由他横,明月照大江,加入没有九阳真经基本功的前期铺垫,张无忌也不能在短短的几个时辰之内练就乾坤大挪移的武学本领,如果将编程比喻为一场武学的修炼,通俗的基本语法可谓之九阳真经,编程语言自身具有的特性可谓之乾坤大挪移。

if控制结构

目前主流的语言,不管是Java、c、c++亦或是go,条件判断语句始终是必须具备的一环,从某种意义上而言,如果一门编程语言没有条件判断结构,那么可以认为这门编程语言在很大程度上还没有达到成熟的程度。

1、if

if condition {
    // do something 
}

2、if-else

if condition {
    // do something 
} else {
    // do something 
}

3、if-else if-else

if condition1 {
    // do something 
} else if condition2 {
    // do something else    
} else {
    // catch-all or default
}

4、example

//if
func f(x int) int {
    if x < 0 {
        return -x
    }
    return x    
}


//if-else
func f1(a int) {
    if a > 10 {
        fmt.Printf("大于10")
    } else {
        fmt.Printf("小于10")
    }
}

//if-else if-else 
func  f2(a int) {
    if a  <  0 {
        fmt.Println("a 小于0")
    } else if a >0 &&a < 10 {
        fmt.Println("a大于0小于10")
    } else {
        fmt.Println("a大于10")
    }
}

switch控制结构

大部分的主流语言,选择控制结构中都会有switch这样的表达形式,go语言中同样也存在这样的表达形式,不过与其他的编程语言有所差异的是,go语言针对switch的使用上更加的灵活,可以接受任意形式上的表达式,而不是只能限制于常量和整形变量之间。

1、表达形式


//表达方式一
switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

//表达方式二(可以省略变量)
switch{
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

//表达方式三
switch initialization {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

2、example

//表达方式一
func main() {
    var num1 int = 100

    switch num1 {
    case 98, 99:
        fmt.Println("It's equal to 98")
    case 100: 
        fmt.Println("It's equal to 100")
    default:
        fmt.Println("It's not equal to 98 or 100")
    }


//表达方式二
func main() {
    var num1 int = 7

    switch {
        case num1 < 0:
            fmt.Println("Number is negative")
        case num1 > 0 && num1 < 10:
            fmt.Println("Number is between 0 and 10")
        default:
            fmt.Println("Number is 10 or greater")
    }
}


//表达方式三
switch result := calculate(); {
    case result < 0:
        ...
    case result > 0:
        ...
    default:
        // 0
}


for控制结构

go语言中的for关键字的功能相比于其他的更加的强大,与其他编程语言有所不同,go语言中的没有while, do …while这些关键字,如果想要循环只能借助for关键字或者range关键字。

1、表达结构

//表达形式一
for 初始化语句; 条件语句; 修饰语句 {

}

//表达形式二
for pos, char := range str {
...
}

//表达形式三
for 条件语句 {}

2、example

//表达方式一
func main() {
    for i := 0; i < 5; i++ {
        fmt.Printf("This is the %d iteration\n", i)
    }
}

//表达方式二
func main() {
     str2 := “fdfgfhgfghgh"
    for index, rune := range str2 {
        fmt.Printf("%-2d      %d      %U '%c' % X\n", index, rune, rune, rune, []byte(string(rune)))
    }
}

//表达方式三
func main() {
    var i int = 5

    for i >= 0 {
        i = i - 1
        fmt.Printf("The variable i is now: %d\n", i)
    }
}


Break和Continue

随着时间的推移,我们有的时候可能会碰到一些特殊的场景,比如当满足一定条件时,我们需要终止本次循环的程序,执行循环后的代码 ,或者跳过某次循环结构中程序的执行,每当面临这样的场景的时候,我们就需要使用到golang中的关键字break和continue。

1、break

//break关键字的作用是跳出循环并执行循环后的代码
func main() {
    for i:=0; i<3; i++ {
        for j:=0; j<10; j++ {
            if j>5 {
                break   
            }
            print(j)
        }
        print("  ")
    }
}

2、continue

//continue关键字的作用是跳过循环结构中的特定的某次循环
func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            continue
        }
        print(i)
        print(" ")
    }
}

label和goto

标签label的关键字的作用是开始调到label指定的位置开始执行, goto 语句可以无条件地转移到过程中指定的行,goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能,但通常情况下不建议使用。

func main() {
	i := 1
flag:
	if i <= 5 {
		fmt.Println(i)
		i++
		goto flag
	}
}

小结

一门编程语言如果开始掌握了以上的知识点,那么从某种程度而言就像蹒跚学步的婴儿一样,已经开始处在奔跑的前夕,如果后续不断的加强相关的练习,那么不需要等待多长的时间便可以数量的掌握这门编程语言了,但革命尚未成功,同志们仍需要继续努力啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值