iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
1

golang 不是一種 OOP (Object-oriented programming) ,反而比較偏向 FP (Functional Programming),雖然我個人認為它不是很純的 FP,但是它擁有 First-class function 的特性,所以可以用一些 script language 常見的手法,使用在 golang 上面。

接下來我們來介紹,該如何宣告一個 func

func 宣告

package main

import "fmt"

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

func main() {
	fmt.Println(add(3, 2))
}

https://play.golang.org/p/AQ9ZaPECNYk

還可以顯示的命名回傳值,直接在回傳值上宣告要命名的變數名稱,這樣最後在 return 時,就不用刻意指定要回傳哪個變數回去了。

package main

import "fmt"

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

func main() {
	fmt.Println(add(3, 2))
}

https://play.golang.org/p/s0L2JHXYD6X

還可以多重回傳值,此手法在 golang error handling (後續章節會介紹) 很常見,約定俗成來說,如果有 error 要回傳,最右邊的變數為 error。

可參考官網 ioutil 的 ReallAll func。

下面範例,為回傳一個 int,一個 string。

package main

import "fmt"

func Info() (age int, name string) {
	age = 18
	name = "syhlion"
	return
}

func main() {
	age, name := Info()
	fmt.Printf("age:%d, name:%s\n", age, name)
}

https://play.golang.org/p/pVu38aHJCBE


上一篇
Golang map
下一篇
Golang struct & pointer
系列文
Go劍復國-30天導入Golang30

尚未有邦友留言

立即登入留言