php入门到就业线上直播课:进入学习Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用

本教程操作环境: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 mainimport ("fmt")func gcdNormal(x, y int) int {var n intif 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 mainimport ("fmt")func change(a int) {a += 100}func main() {//Go语言的函数参数是函数参数,对函数参数的修改不会影响实参a := 10change(a)fmt.Println("a =", a)}

程序运行后,控制台输出如下:

我们定义了一个函数 change(),传入一个 int 类型的参数 a,在函数体中,对该函数的参数实现加 100 的操作。

在 main() 函数中,调用该函数,并传入变量 a,执行完 change() 函数之后,我们再次打印变量 a 的值,发现 a 的值还是10,并不是加 100 之后的 110。

因为在 Go语言中,函数的参数是形式参数,即是实参的拷贝,所以修改的不是实参,所以 a 的值不会改变。

通过函数参数修改实参

Go 语言的函数要通过函数参数修改实参,必须要使用指针类型

package mainimport ("fmt")func change(a *int) {*a += 100}func main() {//Go语言的函数要通过函数参数修改实参,必须要使用指针类型a := 10change(&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中文网其它相关文章!

推荐内容