iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
1
Modern Web

Iris這個在go語言上地表最快的網頁框架系列 第 6

邏輯判斷語法

go 的邏輯判斷語法

在介紹完 go 的變數以及容器,接下來要開始進入程式邏輯判斷的部分,這部分內容與大部分語言相同,不外乎就是ifelseswitch相關的語法,所以接下來針對這細節部分加以說明。

本文同步放置於此

邏輯判斷語法的說明

前面有針對邏輯判斷的語法做一個初步的介紹,所謂邏輯判斷語法不外乎就是ifelseswitch,所以接下來分別針對期內容作細部的說明。

if

這部分就是簡單的如果判斷是,如果成立就會執行區塊內的程式,請見以下例子

package main

import (
	"fmt"
)

func main() {
	odd := 11
	mod := odd % 2
	if mod != 0{
		fmt.Println(odd, "is odd")
	}
}

上面就是一個簡單的if判斷式的例子,其中當if後面條件成立時就會執行{}內的程式,然而還可以寫成下面例子

package main

import (
	"fmt"
)

func main() {
	odd := 11
	if mod := odd % 2; mod != 0{
		fmt.Println(odd, "is odd")
	}
}

簡單講就是將賦值,與判斷寫在同一個區塊,再以;分隔開來,當;後面的判斷成立時就會執行{}的程式。

else

在介紹完if接下來跟大家介紹else,簡單說明else就是當if不成立時會判斷的其他條件,當條件成立時會執行區塊內的程式。詳細請看以下例子

package main

import "fmt"

func main() {
	v := 4
	if v == 1 {
		fmt.Printf("%d is 1", v)
	} else if v == 2 {
		fmt.Printf("%d is 2", v)
	} else if v ==3 {
		fmt.Printf("%d is 3", v)
	} else {
		fmt.Printf("%d is else", v)
	}
}

這裡要注意格式,若是與上面例子不相符會導致於編譯錯誤的問題,同時這部分也可以再if加入賦值的需求然後再;後面加入判斷式,詳細請看以下例子

package main

import "fmt"

func main() {
	o := 10
	
	if v := o%3;v == 1 {
		fmt.Printf("%d is 1", v)
	} else if v == 2 {
		fmt.Printf("%d is 2", v)
	} else if v ==3 {
		fmt.Printf("%d is 3", v)
	} else {
		fmt.Printf("%d is else", v)
	}
}

再例子內v這變數只存在ifelse的判斷式之內,所以拿到底下使用會造成編譯失敗的狀況。到目前為止ifelse的介紹將告一段落,接下來要介紹switch的判斷式。

switch

就如同ifelse一樣,switch的判斷式是檢查變數是否與case後的值相同,當相同就會執行區塊內的程式,詳細請看下列例子

package main

import "fmt"

func main() {
	switch os := "Other"; os {
	case "First":
		fmt.Println("First.")
	case "Second":
		fmt.Println("Second.")
	default:
		// freebsd, openbsd,
		// plan9, windows...
		fmt.Printf("%s.\n", os)
	}
}

以上例子主要是在switch後面有一個賦值的式子接下來以;來區隔,在;後是接著要判斷的變數go,而case後是放著比對的內容,如果go的內容與case後的值相同則會執行casecase之間的程式,如果最後都沒成立會執行default的程式,還有比較特別的地方是對於go而言casecase之間不需要break隔開。但是以下例子就會造成邏輯判斷錯誤

package main

import "fmt"

func main() {
	switch os := "Second"; os {
	case "First":
	case "Second":
		fmt.Println("First and Second.")
	default:
		// freebsd, openbsd,
		// plan9, windows...
		fmt.Printf("%s.\n", os)
	}
}

那要如何修改上述例子呢,就把他當ifelse來使用即可,就是不要在switch給條件式,而在case內寫判斷式,如下列例子所示

package main

import "fmt"

func main() {
	os := "Fourth"
	switch  {
	case os == "First" || os == "Second":
		fmt.Println("First and Second.")
	case os == "Third" || os == "Fourth":
		fmt.Println("Third and Fourth.")
	default:
		// freebsd, openbsd,
		// plan9, windows...
		fmt.Printf("%s.\n", os)
	}
}

除了上述的例子之外switch還有一個要注意的點是,判斷式的順序是由上而下,如果其中一個case成立後就會執行其中的程式並且離開switch判斷式。

結論

這篇的內容主要是介紹 go 的邏輯判斷式,並跟大家分享一下 go 的邏輯判斷式與其他語言的差異。接下來下一篇要開始跟大家分享 go 的迴圈判斷式。


上一篇
容器的類別
下一篇
迴圈的語法
系列文
Iris這個在go語言上地表最快的網頁框架30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言