温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

golang形参要求是什么

发布时间:2022-12-27 13:49:01 来源:亿速云 阅读:102 作者:iii 栏目:编程语言

本文小编为大家详细介绍“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)
}

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

golang形参要求是什么

我们定义了一个函数 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)
}

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

golang形参要求是什么

我们定义了一个函数 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)
}

golang形参要求是什么

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

在 main() 函数中,调用该函数,并传入变量 a 的地址,执行完 change() 函数之后,我们再次打印变量 a 的值,发现 a 的值被增加了 100 变成了 110。

这里的 change() 函数因为传入的是 a 的地址,接着我们在 change() 函数里面通过指针运算符,获取 a 的地址所指向的变量,再修改其值,其实修改的就是变量 a 本身的值。

读到这里,这篇“golang形参要求是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI