iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Software Development

你知道Go是什麼嗎?系列 第 5

Day5 - 函式(function)- Golang

  • 分享至 

  • xImage
  •  

今天是第五天,整篇都介紹function好了

函式,是將多行程式碼組合在一起,提供給其他地方呼叫,讓撰寫更方便快速,且可重複利用的一種方式。另一個與函式相當接近的是method,但那在介紹完struct後比較好懂,因此丟到明天ˊˇˋ

函式宣告

func 函式名稱(參數) 回傳值型態{
    ...
}

// 正常宣告法
func add(x, y int) int {
    return x + y
}

// 使用 := 宣告
func main() {
    add := func(x float64, y float64) float64 {
    	return x + y
    }
    fmt.Println(add(3.3, 5.4)) //8.7
}

匿名函式

用在 goroutine 或該 function 只會使用一次的情況,宣告完賦予參數就可直接執行了。

// 定義一個匿名函式並直接執行
func main() {
  // 沒有參數
    func() {
        fmt.Println("Hello anonymous")
    }() // Hello anonymous

    // 有參數
    func(i, j int) {
        fmt.Println(i + j)
    }(1, 2) // 3
}

其他相關方法

函式本身可以是另一個函式參數,也可以是回傳值

// compute 這個函式可接收其他函式作為參數
func compute(fn func(int, int) int) int {
    return fn(10, 5)
}

func main() {
    plus := func(x, y int) int {
    	return x + y
    }
    reduce := func(x, y int) int {
    	return x - y
    }
    fmt.Println(compute(plus))   // 15, 10+5
    fmt.Println(compute(reduce)) // 5,  10-5
}

可為回傳值命名,或使用return一次將所有參數回傳

// (ans int) <- 為回傳值命名
func add(x, y int) (ans int) {
    ans = x + y
    return
    // return ans
}

func main() {
    fmt.Println(add(50, 37)) // 87
}

今天就介紹到這,好吧量是真的有點少,但這畢竟是馬拉松嘛,配速才是重點啦,明天見ˊˇˋ

參考資料

[Golang] function & method 函式與方法:
https://pjchender.dev/golang/function-and-method/

[Golang] 程式設計教學:撰寫函式 (Function):
https://opensourcedoc.com/golang-programming/function/

tags: Golang

上一篇
Day4 - 型態 - Golang
下一篇
Day6 - 結構與方法 - Golang
系列文
你知道Go是什麼嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言