Go 語言中的函數
本文來介紹 Go 語言中的函數。Go 語言的函數和其它語言的用法類似,但是 Go 語言中所有東西都是變量,包括函數,函數在 Go 語言中也是變量的一種,所以函數名的命名規則和變量名相同,同時這個和我們后面要講解的函數式編程有關,目前本文僅介紹 Go 語言中函數的聲明和使用。
1. 函數的定義和使用
Go 語言中,通過?func?關鍵字來聲明和定義函數。Go 語言和 C 語言不同,Go 語言函數的聲明和定義是一起的,不存在先聲明在定義,且聲明時不分前后均可互相調用。
代碼示例
代碼塊
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func print(s string) {
- 6? ? ? ?
fmt.Println(s)
- 7?
}
- 8
- 9?
func main() {
- 10? ? ? ?
print("Hello Codey !")
- 11
- 12?
}
- 第 5 行:聲明并定義一個名叫 print 的函數,函數接收一個 string 類型的參數;
- 第 6 行:函數體。一個輸出接收進來參數的值的語句;
- 第 9 行:聲明并定義了一個叫main的函數。Go 語言中程序的入口就時 main 函數,所有的程序都以main 函數作為入口;
- 第 10 行:調用 print 函數,傳入參數"Hello Codey !"。
執行結果:
2. 函數的返回值
Go 語言的函數的返回值也有些特殊,它可以一次返回**多個返回值,**Go 語言中如果是單返回值,可以直接在函數聲明的括號后面增加數據類型,代碼示例如下:
代碼塊
- 1?
func Sum(a, b int) int //聲明并定義一個返回值為int數據類型的函數
若要返回多個返回值,則需要用括號包裹返回值,并使用,
隔開所有返回值,代碼示例如下:
代碼塊
- 1?
func Sum(a, b int) (int,string) //聲明并定義一個返回值為int和string數據類型的函數
返回的方式有兩種。一種是用?return?關鍵字加返回值直接返回,一種是聲明返回值變量,使用返回值變量直接返回。
2.1 使用 return+ 返回值返回
和其它語言不同的是,Go 語言可以一次返回多個值,多個值直接跟在?return?關鍵字之后,使用,
隔開即可。
代碼示例:
代碼塊
- 1?
package main
- 2
- 3 ?
import "fmt"
- 4
- 5?
func SumAndProduct(a, b int) (int, int) {
- 6? ? ? ? ?
c := a + b
- 7? ? ? ? ??
d := a * b
- 8? ? ? ? ?
return c, d //同時返回c和d兩個變量
- 9?
}
- 10
- 11?
func main() {
- 12? ? ? ? ?
sum, product := SumAndProduct(1, 2) //接收多返回值的函數時,也需要用逗號隔開變量
- 13? ? ? ? ?
fmt.Println("a + b =", sum)
- 14? ? ? ? ?
fmt.Println("a * b =", product)
- 15?
}
執行結果:
2.2 使用返回值變量返回
Go 語言還能直接在返回值處聲明變量,這個變量的作用域是整個函數,并且會在?return?的時候直接返回。
代碼示例:
代碼塊
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func SumAndProduct(a, b int) (c int, d int) {
- 6? ? ? ? ?
c = a + b //因為c和d函數返回值處已經定義了,可以直接使用
- 7? ? ? ? ?
d = a * b
- 8? ? ? ? ?
return //直接返回,c和d自動傳出去
- 9?
}
- 10
- 11?
func main() {
- 12? ? ? ? ?
sum, product := SumAndProduct(1, 2) //接收多返回值的函數時,也需要用逗號隔開變量
- 13? ? ? ? ?
fmt.Println("a + b =", sum)
- 14? ? ? ? ?
fmt.Println("a * b =", product)
- 15?
}
執行結果:
3. 小結
本文主要介紹了 Go 語言中函數的定義和使用。主要就是和其它語言比起來,Go 語言的函數更加強大,能夠多參數返回,返回值更是能直接寫做變量,且作用域為整個函數。
文章來源于網絡,侵刪!