内容简介:不管是面向过程的编程,还是面向对象的编程,都离不开函数的概念,分别是,谈到参数,我们在写函数或者是类中的方法的时候都需要考虑我们应该传递怎样的参数,或者是是否需要参数。参数首先分为无参函数有参。无参也就是没有参数,也就不用写了。
不管是面向过程的编程,还是面向对象的编程,都离不开函数的概念,分别是, 参数
, 函数名
, 返回值
。接下来我们看看 Go 语言在这三个方面是做怎么操作的吧。
参数
谈到参数,我们在写函数或者是类中的方法的时候都需要考虑我们应该传递怎样的参数,或者是是否需要参数。
参数首先分为无参函数有参。无参也就是没有参数,也就不用写了。
有参
func functionTest() { # 小括号内就是用来放参数的 # 函数体内 }
Go语言是强数据类型的语言,参数是要指定类型的不然就报错。 func
是函数的声明关键字。
func 函数名(参数列表) 返回值类型 {函数体内部}
func addTwoNumber(a int, b int) int { return a + b }
我们这里写了一个很简单的函数,把两个数相加并返回结果
这里我们要注意,参数的类型是写在参数名的后面,和变量定义是一样的。
func addTwoNumber(a int, b int) (sum int) { return a+b }
返回值的定义,是可以给返回值取一个名称的,还有一点是和其他的编程语言不一样的是在Go语言中函数的返回值可以有多个的。
func addTwoNumber(a int, b int) (int, int) { return a+b, a-b }
同时可以给返回值取一个别名
func addTwoNumber(a int, b int) (sum, dif int) { return a+b, a-b }
像这样给返回值取完名字后可以给返回值直接赋值
func addTwoNumber(a int, b int) (sum, dif int) { sum = a+b dif = a-b return }
同样这样也是可以直接返回sum,和dif两个值的。
同时Go语言也具有和 c语言 一样的匿名参数只做占位的作用,Go语言还不仅如此,还有声明变量可以占位的功能。
func addTwoNumber(int, b int) (int, int) { return b, b }
func main() { a, _, c := 1, 2, 3 fmt.Println(a, c) }
其中 _
是用来占位的,并不可以使用。
可变参数列表
func sum(numbers ...int) int { s := 0 for i := range numbers{ s += i } return s } func main() { fmt.Println(sum(1,2,3,4,5)) }
像这样我们就可以传给 sum
函数多个值了。
Go中的值传递,地址传递
在很多语言中,在调用函数或者是方法的时候,都是要考虑我们是传递 值
还是传递 地址
(在某些语言中叙述的是传递 引用
),到底是传递值还是传递地址这一概念是非常重要的,我们应该弄清楚。
我们用一个交换数的例子来讲解:
值传递
package main import "fmt" func swap(x, y int) { var temp = x x = y y = temp } func main() { a,b := 1,2 swap(a,b) fmt.Println(a, b) }
值传递
地址传递
package main import "fmt" func swap(a, b *int) { var temp = *a *a = *b *b = temp } func main() { a,b := 1,2 swap(&a,&b) fmt.Println(a, b) }
地址传递
以上所述就是小编给大家介绍的《Golang中的自定义函数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Python 函数调用&定义函数&函数参数
- 不同语言在函数内部定义函数
- Shell编程—【04】函数的定义、参数、变量作用域、函数库
- Laravel 增加自定义全局函数
- 在 Go 语言中定义函数
- HIVE自定义函数的扩展
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。