iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
Modern Web

Go,一起成為全端吧!—— 給前端工程師的 Golang 後端學習筆記系列 第 3

Day3 - Go 基本語法介紹-1:變數、基本型態、條件與迴圈

  • 分享至 

  • xImage
  •  

今天要來介紹 Go 的一些基本語法 part1!

大家之前如果有寫過 Typescript 和 C 語言的話,我覺得 Go 就是這兩種語言的綜合體 😆,有 C 語言指標的概念也有 Typescript 強型別的概念~ 比較特別的是它沒有 while 的用法,只有 for 迴圈~

那我們就開始吧!
/images/emoticon/emoticon08.gif


Go 的基本語法-1

這邊會先用一些簡單的例子讓大家看一下語法的差別。

📌 在程式結構上,每個 Go 程式至少要有一個 main 套件 (package),並且從 main() 函式開始執行。像是昨天練習印出的 Hello World 程式就是放在 main 裡頭。

1. 變數&常數

在變數的宣告上,基本上和其他的語言是沒有什麼差別的,比較特別的就是「 短變數 」宣告的位置要特別留意一下。

package main
import "fmt"
    
var a int = 10       // 明確指定型別
var b = 20           // 自動推斷型別
    
func main() {
    
    c := 30              // 短變數宣告 (只能在 function 裡用)
    const PI = 3.14      // 不可更改的常數
    fmt.Println(a, b, c, PI)
}

2. 基本型別

基本型別幾乎跟其他語言一樣,不外乎是一些 整數、浮點數、字串和布林。要注意的是它宣告變數方式的寫法,當然也可以用剛剛第一點中提到的 「 短變數宣告 」 ,這樣就不需要特別寫型態了~

不過我覺得在寫程式時還是要把型態定義清楚比較好,除了是與其他人一起合作的時候,能夠讓對方輕鬆了解之外,當程式變得複雜時也會比較好 debug 😆。

var x int = 100          // 整數
var y float64 = 3.14     // 浮點數
var z string = "hello"   // 字串
var ok bool = true       // 布林值

3. 條件判斷

這邊比較特別的是省略了 if 的括號 (),等等要介紹的 for 也一樣省略括號了!(突然被拿掉括號,覺得好不習慣 😶)。

Go 總共有 2 種常見的用法:

  1. 一般
    最基本的判斷,搭配 else if 或是 else
package main
import "fmt"
        
func main() {
    score := 85  //要留意短變數宣告的位子一定要在 fuction 裡面唷 
        
    if score >= 60 {
        fmt.Println("及格")
    } else {
        fmt.Println("不及格")
    }
}
  1. 帶初始化語句
    if 判斷前,先做一個宣告或賦值,這是 recover() 常用的做法。(這部分在後面介紹錯誤處理時會再詳細說明)
package main
import "fmt"

func main() {

    if r := recover(); r != nil {
        fmt.Println("捕捉到 panic:", r)
    }
}

等於:

package main
import "fmt"
        
func main() {
    r := recover()
    if r != nil {
        fmt.Println("捕捉到 panic:", r)
    }
}

4. 迴圈 for

Go 雖然只有 for 迴圈,但也是可以當成 while 使用,是不是很彈性~~ 這邊只要注意要記得省略括號就好,跟剛剛的 if 一樣,一般情況時,用法基本上是一樣的。

package main
import "fmt"
    
func main() {
    
    // 用法一(for 迴圈)
    for i := 0; i < 5; i++ {
        fmt.Println("i =", i)
    }
    	
    // 用法二(類似 while 用法)
    j := 0
    for j < 3 {
        fmt.Println("j =", j)
        j++
    }
}

另外有些方式比較特別一些,分別是 無限迴圈遍歷 這兩種方式:

  1. 無限迴圈:
    比較常用在 伺服器監聽 / 不斷接收輸入 的場景中。
package main
import "fmt"
        
func main() {
    for {
        fmt.Println("一直跑...")
        break  // 要加上 break 才能跳出
    }
}
  1. for-range(遍歷):
    遍歷的話,共有三種方式可以使用,
//遍歷 slice
package main
import "fmt"
        
func main() {
    nums := []int{10, 20, 30}
    for i, v := range nums {                // 取得索引和值
        fmt.Println("索引:", i, "值:", v) 
    }
        	
    for _i, v := range nums {                // 只需要取值
        fmt.Println("索引:", i, "值:", v) 
    }
        	
    m := map[string]int{"a": 1, "b": 2}      // 遍歷 map
    for k, v := range m {
        fmt.Println("鍵:", k, "值:", v)
    }
        
    for i, r := range "哈囉" {                // 遍歷字串
        fmt.Println(i, string(r))
    }
}
  1. 搭配 break / continue:
//範例
package main
import "fmt"
        
func main() {
    for i := 0; i < 5; i++ {
        if i == 2 {
            continue      // 跳過這次迴圈
        }
        if i == 4 {
            break         // 提前結束迴圈
        }
        fmt.Println(i)
    }
}

5. switch

這邊一樣是省略括號就好唷!

package main
import "fmt"
    
func main() {
    
    day := 3
    
    switch day {
        case 1:
            fmt.Println("Monday")
        case 2:
            fmt.Println("Tuesday")
        default:
            fmt.Println("Other day")
        }
    }

今天就先介紹到這邊~
下一章節會繼續介紹 Go 基本語法 part2:陣列、函式、結構以及指標,大家明天見啦!


上一篇
Day2 - Go 語法初探:Hello World 又來了
下一篇
Day4 - Go 基本語法介紹-2:陣列、函式、結構與指標
系列文
Go,一起成為全端吧!—— 給前端工程師的 Golang 後端學習筆記5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言