Like Share Discussion Bookmark Smile

J.J. Huang   2025-03-01   Getting Started Golang 04.函式   瀏覽次數:次   DMCA.com Protection Status

Go | 初步了解函式是什麼?

💬 簡介

函式是程式設計中的基礎概念之一。它可以讓我們將一段程式碼封裝成為一個可重複使用的單元,藉此提高程式的可讀性與維護性。在 Go 語言中,函式是非常核心的部分,它不僅能封裝邏輯,還能夠進行參數傳遞和返回結果。

本篇文章將簡單介紹函式,幫助你了解它的基本概念和語法,並展示如何在日常開發中使用它們。

圖片來源:Gophers


🔎 什麼是函式?

函式(Function)是一組可以重複執行的程式碼,它有自己的名稱,可以接受參數並返回結果。使用函式的好處是能讓程式邏輯更加清晰、模組化,並且可以重複使用。

在 Go 中,函式由以下幾個基本部分構成:

  • 函式名稱:用來識別函式。
  • 參數:傳遞給函式的資料,可以是任意型別。
  • 返回值:函式執行後返回的結果。

1️⃣ 函式的基本語法

在 Go 語言中,函式的定義語法如下:

1
2
3
4
func 函式名稱(參數1 型別, 參數2 型別, ...) 回傳型別 {
// 函式體
return 回傳值
}

🖥️ 程式邏輯解析:

  • func:關鍵字,用來定義函式。
  • 函式名稱:函式的識別名稱。
  • 參數:可以有多個,並且每個參數都有指定的型別。
  • 回傳型別:定義函式回傳的結果型別。
  • return:返回指定的結果。
  • 範例:基本的函式定義
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package main

    import "fmt"

    // 定義一個函式,用來計算兩個數字的和
    func add(a int, b int) int {
    return a + b
    }

    func main() {
    sum := add(10, 20)
    fmt.Println("兩數之和:", sum) // 輸出:兩數之和: 30
    }

    📝 在這個範例中,我們定義了一個 add 函式,它接受兩個整數作為參數,並返回它們的和。在 main 函式中,我們呼叫 add 函式並顯示結果。


🔢 函式參數與回傳值

1️⃣ 多個參數與相同型別

Go 允許我們在函式中使用多個參數,甚至對於型別相同的參數,可以將它們合併成一個簡單的宣告。

  • 範例:多個相同型別的參數
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package main

    import "fmt"

    // 定義一個函式,接受兩個相同型別的參數
    func add(a, b int) int {
    return a + b
    }

    func main() {
    sum := add(5, 8)
    fmt.Println("加總結果:", sum) // 輸出:加總結果: 13
    }

    📝 在這個範例中,我們將 ab 的型別都寫成 int,這是 Go 語言提供的一種簡化語法。

2️⃣ 回傳多個值

Go 支援函式返回多個值,這對於需要返回多個結果的情況非常有用。

  • 範例:函式返回多個值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package main

    import "fmt"

    // 定義一個函式,返回兩個值
    func calculate(a int, b int) (int, int) {
    return a + b, a * b
    }

    func main() {
    sum, product := calculate(4, 5)
    fmt.Println("加總:", sum) // 輸出:加總: 9
    fmt.Println("乘積:", product) // 輸出:乘積: 20
    }

    📝 在這個範例中,calculate 函式同時返回了兩個值:加總和乘積。我們在 main 函式中接收這兩個返回值並顯示出來。


🔄 函式作為變數

在 Go 中,函式不僅是語法結構,也可以作為變數傳遞或賦值。這讓函式的使用變得更加靈活。

  • 範例:函式作為變數
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package main

    import "fmt"

    func add(a, b int) int {
    return a + b
    }

    func main() {
    // 將函式 assign 給變數
    sum := add

    result := sum(10, 20)
    fmt.Println("結果:", result) // 輸出:結果: 30
    }

    📝 在這個範例中,我們將 add 函式賦值給變數 sum,並在後續直接通過 sum 來執行函式。

🚨 關於「函式作為變數」這部分會於下一章節進行較為深入的介紹。


⚠️ 注意事項

1️⃣ 函式中的參數與返回值型別

當你定義函式時,必須確保傳遞的參數和返回值的型別與定義的型別一致。如果型別不匹配,Go 會報錯。

2️⃣ 命名規則

函式名稱首字母大寫時,函式是公開的,可以被其他包調用;如果首字母小寫,則該函式是包內部使用的私有函式。


🎯總結

函式是 Go 程式設計中的重要基礎概念,它有助於將重複的邏輯封裝成可重用的模組,提高程式的可維護性。理解函式的語法、參數傳遞和返回值對於寫出清晰、簡潔的程式碼至關重要。

最後建議回顧一下 Go | 菜鳥教學 目錄,了解其章節內容。


註:以上參考了
Go