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中文网其他相关文章!