Go语言函数
函数在Go语言中,是一等“公民”,和其它语言中的函数的声明和定义是类似的。
函数就是一段功能代码的包装,并且起个名字,有输入参数和输出,通过函数的名字就可以调用了
Go语言中,函数之所以被称作“一等公民”,是因为Go语言的函数,可以像变量一样使用
函数可以赋值给一个变量,可以当作参数传递。
本小节只介绍函数的声明和定义以及使用
1 函数的定义
有的编程语言,比如 C/C++ ,函数的声明和定义是分开的。
但是Go语言的函数声明和定义是在一起的,而且不分先后,都可以互相调用。
Go语言函数的定义的语法如下:
func function_name(参数) 返回类型 { //函数体 }
我们还是以永恒的 "hello,world" 为例子,声明一个函数,打印一句 "hello,world"
示例如下:
package main import "fmt" //1 定义了一个函数show func show() { fmt.Println("hello,world") } func main() { //2 调用 show() } //输出: hello,world
定义函数使用关键字 func
,后面跟函数的名字
, 名字后面跟上()
,接着 { }
中就是函数体
了
可以在函数体中写上我们的代码了。
上面,可以看出,定义了一个函数 show
,函数体中打印了一句 hello,world
2 有参数的函数
上面的 show()
函数是无参无返回值的
- 无参数:所谓无参就是小括号中不用传参数
- 无返回值:就是函数执行完后,没有返回值
下面我们定义一个函数,传入 2 个数,返回其和
代码示例如下:
package main import "fmt" //定义一个函数add //输入两个数 a , b //返回两个数的和 func add(a int, b int) int { return a + b } func main() { //调用 add 函数,并接收值 sum := add(10,20) fmt.Println( sum ) } //输出: 30
3 多个返回值的函数
上面的例子返回的是一个值 ,其它很多其它编程语言也是只能返回一个值,比如 C , C++ , Java 等
如果想要返回多个值,就得定义一个类或者结构体,返回一个结构体。
但是Go语言函数,支持返回多个值。
语法如下:
func func_name(参数) (返回类型1 , 返回类型2, ... ) { }
- 使用
func
关键字定义函数 - 返回类型如果有多个,需要用小括号
( )
括起来,里面写个返回值的类型,有几个写几个
下面的例子:定义一个函数输入 2 个数,分别返回 2个数的和与差,如下
package main import "fmt" //返回两个数的和与差 func addAndSub(a int , b int) (int,int) { return a + b , a - b } func main() { m , n := addAndSub(8,2) fmt.Println(m,n) } //输出:10 6
上面的例子, m , n := addAndSub(8,2)
, addAndSub
函数返回了 2 个值 ,分别用 m , n 接收
如果我们只想接收其中一个,可以使用 _
丢弃, 如:m, _ := addAndSub(8,2)
, 此时 m
为 10
4 小结
本小节主要介绍了Go语言的函数的定义和使用,总结如下:
-
Go语言声明和定义函数是在一起的,不分先后,都可以互相调用
-
定义函数使用
func
关键字,后面跟函数名
, 再接着小括号( )
,后面是返回值类型如定义一个函数:
func add(a int, b int) int { }
-
Go语言支持函数返回多个值,语法为:
func AddAndSub(a int ,b int) (int, int) { }
-
返回多个值时,函数的定义后面的返回值类型,要写在括号
( )
中 ,只有一个返回值,可以省略 -
如果不想接收某个返回值,可以使用
_
丢弃。如m , _ := addAndSub()