Hike News
Hike News

Go初識-day6-流程控制_1

if / else 分支判斷

  • if的條件不需要加括號

    example 1

    1
    2
    3
    if condtion1 {

    }

example 2

1
2
3
4
5
if condition1 {

} else {

}

example 3

1
2
3
4
5
6
7
8
9
if condtion1 {

} else if condtion2 {

} else if condtion3 {

} else {

}

tips

else或是else if一定是放在上一個語句塊的}右邊,以下為錯誤範例

1
2
3
4
5
6
if condtion {

}
else {

}


if判斷錯誤(if err != nil)

通常調用函數時會返回一個結果加一個錯誤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import (
"io/ioutil"
"fmt"
)

func main(){
FileName := "test.log"
content,err := ioutil.ReadFile(FileName)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n",content)
}
}

可在if語句中定義變量,並用;隔開判斷語句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
"io/ioutil"
"fmt"
)

func main(){
FileName := "test.log"
if content,err := ioutil.ReadFile(FileName); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n",content)
}
}

  • 在if語句內定義的變量,作用域就只在if/else代碼塊中
    只要跳脫if/else語句代碼塊之外便不能訪問

switch case 語句

  • 與c語言不一樣的地方就是每個case之間不需要break也不會穿透到其他case
  • 如果仍想要穿透其他case執行可以在兩個case之間加上關鍵字fallthrough

example 1

1
2
3
4
5
6
switch var {
case var1:
case var2:
case var3:
default: //[1]
}

[1] 要是前面的case都不符合,default用來執行一個默認的分支

example 2

多個值要使用相同的case可以寫在同一個case的條件語句

1
2
3
4
5
6
7
8
9
var a int = 0
switch a {
case 0,1,3,5,7,9:
fmt.Println("It's 0 or 1,3,5,7,9")
case 2:
fmt.Println("It's 2")
default:
fmt.Println("It's default")
}

example 3

switch後可以沒有表達式case後使用條件語句

1
2
3
4
5
6
7
8
9
10
11
var i int = 0
switch {
case i<0 && i>-1:
fmt.Println("-1<i<0")
case i>0 && i<1:
fmt.Println("0<i<1")
case i == 0:
fmt.Println("i = 0")
default:
fmt.Println("i didn't between 1 and -1")
}

example 4

switch關鍵字後面可以初始化值

1
2
3
4
5
6
7
8
9
10
switch i:=0;{           //[1]
case i<0 && i>-1:
fmt.Println("-1<i<0")
case i>0 && i<1:
fmt.Println("0<i<1")
case i == 0:
fmt.Println("i = 0")
default:
fmt.Println("i didn't between 1 and -1")
}

[1]注意初始化值為一語句,後面需加上分號;,否則無法編譯