本文小編為大家詳細(xì)介紹“golang形參要求是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“golang形參要求是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
創(chuàng)新互聯(lián)成立于2013年,先為禮縣等服務(wù)建站,禮縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為禮縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
Go語(yǔ)言中函數(shù)的參數(shù)就是形參,它是局部變量,其值由參數(shù)調(diào)用者提供;如果相鄰的幾個(gè)形參的類型相同,那么可以省略前幾個(gè)參數(shù)的類型,只需要寫(xiě)最后一個(gè)參數(shù)的類型即可,語(yǔ)法“func funcName(形參1, 形參2 參數(shù)類型1, 形參3,形參4 參數(shù)類型2, ...)(返回值列表){ //執(zhí)行語(yǔ)句...return 返回值列表}”。
Go語(yǔ)言函數(shù)參數(shù)
Go 語(yǔ)言 中 函數(shù) 的參數(shù),為形式參數(shù),即如果我們通過(guò)傳值的方式,傳遞的參數(shù)其實(shí)是實(shí)際參數(shù)的一份拷貝,而不是真正的實(shí)際參數(shù)。形參是局部變量,其值由參數(shù)調(diào)用者提供。
在 Go 語(yǔ)言中,如果相鄰的幾個(gè)函數(shù)參數(shù)的類型相同,那么我們可以省略前幾個(gè)參數(shù)的類型,只需要寫(xiě)最后一個(gè)參數(shù)的類型即可。
func funcName(param1, param2 paramType1, param3, param4 paramType2, ...)(returnVal returnType){ // 執(zhí)行語(yǔ)句...
return 返回值列表
}
說(shuō)明
參數(shù) param1 和參數(shù) param2 的類型相同,那么我們就可以省略 param1 后面的參數(shù)類型,直接在 param2 后面寫(xiě)類型。
參數(shù) param3 和參數(shù) param4 的類型相同,那么我們就可以省略 param3 后面的參數(shù)類型,直接在 param4 后面寫(xiě)類型。
returnVal returnType
為返回值列表,描述了函數(shù)返回值的變量名以及類型,如果函數(shù)返回一個(gè)無(wú)名變量或者沒(méi)有返回值,返回值列表的括號(hào)是可以省略的。
案例
用函數(shù),實(shí)現(xiàn)尋找兩個(gè)數(shù)的最大公約數(shù)
package main
import (
"fmt"
)
func gcdnormal(x, y int) int {
var n int
if x > y {
n = y
} else {
n = x
}
for i := n; i >= 1; i-- {
if x%i == 0 && y%i == 0 {
return i
}
}
return 1
}
func main() {
//用函數(shù),實(shí)現(xiàn)計(jì)算兩個(gè)數(shù)的最大公約數(shù)
gcd := gcdNormal(10,20)
fmt.Println("Gcd =", gcd)
}
程序運(yùn)行后,控制臺(tái)輸出如下:
我們定義了一個(gè)函數(shù) gcdNormal,傳入兩個(gè) int 類型 的參數(shù) a 和 b,函數(shù)返回一個(gè) int 類型的 變量。該函數(shù)使用了窮舉法實(shí)現(xiàn)了求參數(shù) a 和 參數(shù) b 的最大公約數(shù)的邏輯,因?yàn)閰?shù) a 和參數(shù) b 的類型都是 int 類型,因此我們省略了參數(shù) a 后面的類型,直接寫(xiě)在參數(shù) b 后面。
在 main() 函數(shù)里面,我們調(diào)用了 gcdNormal 函數(shù),并傳入了兩個(gè)參數(shù) 10 和 20,使用 gcd 變量來(lái)接受 gcdNormal 函數(shù)返回的值,最后使用 Println() 函數(shù)打印最后的結(jié)果。
函數(shù)參數(shù)是形參
Go 語(yǔ)言的函數(shù)參數(shù)是形參,對(duì)函數(shù)參數(shù)的修改不會(huì)影響實(shí)參
package main
import (
"fmt"
)
func change(a int) {
a += 100
}
func main() {
//Go語(yǔ)言的函數(shù)參數(shù)是函數(shù)參數(shù),對(duì)函數(shù)參數(shù)的修改不會(huì)影響實(shí)參
a := 10
change(a)
fmt.Println("a =", a)
}
程序運(yùn)行后,控制臺(tái)輸出如下:
我們定義了一個(gè)函數(shù) change(),傳入一個(gè) int 類型的參數(shù) a,在函數(shù)體中,對(duì)該函數(shù)的參數(shù)實(shí)現(xiàn)加 100 的操作。
在 main() 函數(shù)中,調(diào)用該函數(shù),并傳入變量 a,執(zhí)行完 change() 函數(shù)之后,我們?cè)俅未蛴∽兞?a 的值,發(fā)現(xiàn) a 的值還是10,并不是加 100 之后的 110。
因?yàn)樵?Go語(yǔ)言中,函數(shù)的參數(shù)是形式參數(shù),即是實(shí)參的拷貝,所以修改的不是實(shí)參,所以 a 的值不會(huì)改變。
通過(guò)函數(shù)參數(shù)修改實(shí)參
Go 語(yǔ)言的函數(shù)要通過(guò)函數(shù)參數(shù)修改實(shí)參,必須要使用指針類型
package main
import (
"fmt"
)
func change(a *int) {
*a += 100
}
func main() {
//Go語(yǔ)言的函數(shù)要通過(guò)函數(shù)參數(shù)修改實(shí)參,必須要使用指針類型
a := 10
change(&a)
fmt.Println("a =", a)
}
我們定義了一個(gè)函數(shù) change(),傳入一個(gè) int 指針類型的參數(shù) a,在函數(shù)體中,對(duì)該函數(shù)的參數(shù)實(shí)現(xiàn)加 100 的操作。
在 main() 函數(shù)中,調(diào)用該函數(shù),并傳入變量 a 的地址,執(zhí)行完 change() 函數(shù)之后,我們?cè)俅未蛴∽兞?a 的值,發(fā)現(xiàn) a 的值被增加了 100 變成了 110。
這里的 change() 函數(shù)因?yàn)閭魅氲氖?a 的地址,接著我們?cè)?change() 函數(shù)里面通過(guò)指針運(yùn)算符,獲取 a 的地址所指向的變量,再修改其值,其實(shí)修改的就是變量 a 本身的值。
讀到這里,這篇“golang形參要求是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。