iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
1

再來進到 golang 邏輯控制的部分,go 因為保留字很少,相對的他的邏輯控制也相當簡單,下面就來介紹他

golang 正式來說有四種邏輯控制結構分別是:

  • for
  • if
  • switch
  • goto

for

先來起手式,跑10次迴圈並印出每次結果

package main

import (
	"fmt"
)

func main() {

	for i:=0;i<10;i++ {
		fmt.Println(i)
	}

}

https://play.golang.org/p/Bjy35JD63DT

for 也能當作 其他語言的 while使用,來看看下面範例

package main

import (
	"fmt"
)

func main() {
	i := 0
	for i < 10 {

		fmt.Println(i)
		i++
	}

}

https://play.golang.org/p/ArR0Kqy6ebO

if

我們延續for的 第一個範例稍作改良,不在迴圈聲明裡面指定範圍,而是在迴圈裡面加入 if 判斷式,來判斷範圍跳出迴圈

package main

import (
	"fmt"
)

func main() {
	i :=0
	for {
		if i>9 {
			break
		}
		fmt.Println(i)
		i++
	}

}

https://play.golang.org/p/7RkJtF0UB00

有 if 當然也有else了

package main

import (
	"fmt"
)

func main() {
	i := 0
	for i < 10 {
		if i < 5 {
			fmt.Printf("%d 小於 %d\n", i, 5)
		} else {
			fmt.Printf("%d 大於或等於 %d\n", i, 5)
		}

		i++
	}

}

https://play.golang.org/p/adAxV5rycuo

if 有一個很方便的方法

package main

import (
	"fmt"
)

func Test() int {
	return 5
}

func main() {
	if a := Test(); a >= 5 {
		fmt.Println(a)
	} else {
		fmt.Println("no hit")
	}
}

他可以呼叫完func 直接在一行裡面,對那個值做邏輯判斷,蠻多情境下,可以讓你的code,更清爽。

https://play.golang.org/p/rxHltWNF5oZ

switch

switch 一般來說,是用在你的條件很多,如果用if去做,整個結構會看起來很複雜,所以這種情況就非常適合用switch

package main

import (
	"fmt"
)

func main() {
	a := 1
	switch a {
	case 1:
		fmt.Println("hit 1")
	case 2:
		fmt.Println("hit 2")
	default:
		fmt.Println("no hit")
	}
}

golang switch 跟其他語言不太一樣,他不需要特別下 break 這個關鍵字來跳出 case

https://play.golang.org/p/zHPVEojo1y2

goto

基於個人喜好,以及這個結構,我只能想到,會造成 code 的複雜以及難閱讀,在推廣的角度下,不鼓勵大家用,所以也就不多做介紹了。


上一篇
Golang型別
下一篇
Golang array & slice
系列文
Go劍復國-30天導入Golang30

尚未有邦友留言

立即登入留言