Go語言中函數的參數是形參,它是局部變量,其值由參數呼叫者提供;如果相鄰的幾個形參的類型相同,那麼可以省略前幾個參數的類型,只需要寫最後一個參數的類型即可,語法「func funcName(形參1, 形參2 參數類型1, 形參3,形參4 參數類型2, ...)(返回值列表){ / /執行語句...return 傳回值清單}」。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go語言函數參數
Go 語言 中 函數 的參數,為形式參數,即如果我們透過傳值的方式,傳遞的參數其實是實際參數的一份拷貝,而不是真正的實際參數。形參是局部變量,其值由參數呼叫者提供。
在 Go 語言中,如果相鄰的幾個函數參數的類型相同,那麼我們可以省略前幾個參數的類型,只需要寫最後一個參數的類型。
func funcName(param1, param2 paramType1, param3, param4 paramType2, ...)(returnVal returnType){ // 执行语句... return 返回值列表 }
說明
參數param1 和參數param2 的型別相同,那麼我們就可以省略param1 後面的參數型,直接在param2 後面寫類型。
參數 param3 和參數 param4 的型別相同,那麼我們就可以省略 param3 後面的參數類型,直接在 param4 後面寫類型。
returnVal returnType
為傳回值列表,描述了函數傳回值的變數名稱以及類型,如果函數傳回無名變數或沒有傳回值,則傳回值列表的括號是可以省略的。
案例
#用函數,實作尋找兩個數的最大公約數
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() { //用函数,实现计算两个数的最大公约数 gcd := gcdNormal(10,20) fmt.Println("Gcd =", gcd) }
程式運行後,控制台輸出如下:
我們定義了一個函數gcdNormal,傳入兩個int 類型的參數a 和b,函數傳回一個int 類型的變數。函數使用了窮舉法實現了求參數a 和參數b 的最大公約數的邏輯,因為參數a 和參數b 的類型都是int 類型,因此我們省略了參數a 後面的類型,直接寫在參數b後面。
在main() 函數裡面,我們呼叫了gcdNormal 函數,並傳入了兩個參數10 和20,使用gcd 變數來接受gcdNormal 函數傳回的值,最後使用Println() 函數列印最後的結果。
函數參數是形參
Go 語言的函數參數是形參,對函數參數的修改不會影響實參
package main import ( "fmt" ) func change(a int) { a += 100 } func main() { //Go语言的函数参数是函数参数,对函数参数的修改不会影响实参 a := 10 change(a) fmt.Println("a =", a) }
程序運行後,控制台輸出如下:
我們定義了一個函數change(),傳入一個int 類型的參數a,在函數體中,對此函數的參數實作加100 的操作。
在main() 函數中,呼叫該函數,並傳入變數a,執行完change() 函數之後,我們再次印出變數a 的值,發現a 的值還是10,並不是加100之後的110。
因為在 Go語言中,函數的參數是形式參數,也就是實參的拷貝,所以修改的不是實參,所以 a 的值不會改變。
透過函數參數修改實參
Go 語言的函數要透過函數參數修改實參,必須使用指標型別
package main import ( "fmt" ) func change(a *int) { *a += 100 } func main() { //Go语言的函数要通过函数参数修改实参,必须要使用指针类型 a := 10 change(&a) fmt.Println("a =", a) }
我們定義了一個函數change(),傳入一個int 指標型別的參數a,在函數體中,對此函數的參數實作加100 的運算。
在main() 函數中,呼叫該函數,並傳入變數a 的位址,執行完change() 函數之後,我們再次列印變數a 的值,發現a 的值被增加了100 變成了110。
這裡的change() 函數因為傳入的是a 的位址,接著我們在change() 函數裡面透過指標運算符,取得a 的位址所指向的變量,再修改其值,其實修改的就是變數a 本身的值。
Go語言函數參數總結
Go 語言中函數的參數,為形式參數,也就是如果我們透過傳值的方式,傳遞的參數其實是實際參數的一份拷貝,而不是真正的實際參數。
在 Go 語言中,如果相鄰的幾個函數參數的類型相同,那麼我們可以省略前幾個參數的類型,只需要寫最後一個參數的類型。
更多程式相關知識,請造訪:程式設計影片! !
以上是golang形參有什麼要求的詳細內容。更多資訊請關注PHP中文網其他相關文章!