您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“golang形參要求是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“golang形參要求是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Go語言中函數的參數就是形參,它是局部變量,其值由參數調用者提供;如果相鄰的幾個形參的類型相同,那么可以省略前幾個參數的類型,只需要寫最后一個參數的類型即可,語法“func funcName(形參1, 形參2 參數類型1, 形參3,形參4 參數類型2, ...)(返回值列表){ //執行語句...return 返回值列表}”。
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 本身的值。
讀到這里,這篇“golang形參要求是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。