Go 語言中的函數(shù)
本文來介紹 Go 語言中的函數(shù)。Go 語言的函數(shù)和其它語言的用法類似,但是 Go 語言中所有東西都是變量,包括函數(shù),函數(shù)在 Go 語言中也是變量的一種,所以函數(shù)名的命名規(guī)則和變量名相同,同時(shí)這個(gè)和我們后面要講解的函數(shù)式編程有關(guān),目前本文僅介紹 Go 語言中函數(shù)的聲明和使用。
1. 函數(shù)的定義和使用
Go 語言中,通過?func?關(guān)鍵字來聲明和定義函數(shù)。Go 語言和 C 語言不同,Go 語言函數(shù)的聲明和定義是一起的,不存在先聲明在定義,且聲明時(shí)不分前后均可互相調(diào)用。
代碼示例
- 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 行:聲明并定義一個(gè)名叫 print 的函數(shù),函數(shù)接收一個(gè) string 類型的參數(shù);
- 第 6 行:函數(shù)體。一個(gè)輸出接收進(jìn)來參數(shù)的值的語句;
- 第 9 行:聲明并定義了一個(gè)叫main的函數(shù)。Go 語言中程序的入口就時(shí) main 函數(shù),所有的程序都以main 函數(shù)作為入口;
- 第 10 行:調(diào)用 print 函數(shù),傳入?yún)?shù)"Hello Codey !"。
執(zhí)行結(jié)果:

2. 函數(shù)的返回值
Go 語言的函數(shù)的返回值也有些特殊,它可以一次返回**多個(gè)返回值,**Go 語言中如果是單返回值,可以直接在函數(shù)聲明的括號(hào)后面增加數(shù)據(jù)類型,代碼示例如下:
- 1?
func Sum(a, b int) int //聲明并定義一個(gè)返回值為int數(shù)據(jù)類型的函數(shù)
若要返回多個(gè)返回值,則需要用括號(hào)包裹返回值,并使用,
隔開所有返回值,代碼示例如下:
- 1?
func Sum(a, b int) (int,string) //聲明并定義一個(gè)返回值為int和string數(shù)據(jù)類型的函數(shù)
返回的方式有兩種。一種是用?return?關(guān)鍵字加返回值直接返回,一種是聲明返回值變量,使用返回值變量直接返回。
2.1 使用 return+ 返回值返回
和其它語言不同的是,Go 語言可以一次返回多個(gè)值,多個(gè)值直接跟在?return?關(guān)鍵字之后,使用,
隔開即可。
代碼示例:
- 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 //同時(shí)返回c和d兩個(gè)變量
- 9?
}
- 10
- 11?
func main() {
- 12? ? ? ? ?
sum, product := SumAndProduct(1, 2) //接收多返回值的函數(shù)時(shí),也需要用逗號(hào)隔開變量
- 13? ? ? ? ?
fmt.Println("a + b =", sum)
- 14? ? ? ? ?
fmt.Println("a * b =", product)
- 15?
}
執(zhí)行結(jié)果:

2.2 使用返回值變量返回
Go 語言還能直接在返回值處聲明變量,這個(gè)變量的作用域是整個(gè)函數(shù),并且會(huì)在?return?的時(shí)候直接返回。
代碼示例:
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func SumAndProduct(a, b int) (c int, d int) {
- 6? ? ? ? ?
c = a + b //因?yàn)閏和d函數(shù)返回值處已經(jīng)定義了,可以直接使用
- 7? ? ? ? ?
d = a * b
- 8? ? ? ? ?
return //直接返回,c和d自動(dòng)傳出去
- 9?
}
- 10
- 11?
func main() {
- 12? ? ? ? ?
sum, product := SumAndProduct(1, 2) //接收多返回值的函數(shù)時(shí),也需要用逗號(hào)隔開變量
- 13? ? ? ? ?
fmt.Println("a + b =", sum)
- 14? ? ? ? ?
fmt.Println("a * b =", product)
- 15?
}
執(zhí)行結(jié)果:

3. 小結(jié)
本文主要介紹了 Go 語言中函數(shù)的定義和使用。主要就是和其它語言比起來,Go 語言的函數(shù)更加強(qiáng)大,能夠多參數(shù)返回,返回值更是能直接寫做變量,且作用域?yàn)檎麄€(gè)函數(shù)。
文章來源于網(wǎng)絡(luò),侵刪!