这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战
函数的概述
函数是什么,在其他编程语言都有函数,为了完成某个具体功能封装起来的集合
函数是执行特定任务的代码块。
函数的定义
func 函数名(参数) (返回值) {
return xxx
}
func funcName(inpt1 type1, inpt2 type2) (outp1 type1, outp2 type2) {
return value1, value2
}
- func:函数由 func 开始声明
- funcName:函数名称,函数名和参数列表一起构成了函数签名。
- parametername type:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
- output1 type1, output2 type2:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
- 上面返回值声明了两个变量output1和output2,如果你不想声明也可以,直接就两个类型。
- 如果只有一个返回值且不声明返回值变量,那么你可以省略包括返回值的括号(即一个返回值可以不声明返回类型)
- 函数体:函数定义的代码集合。
- 函数的定义及左大括号放在同一行
- 多返回值
- 忽略函数返回值
多返回实例演示
实例 1.1.定义一个函数[actionVariables],返回2个返回值,加和,相减,测试多返回值
func actionVariables(var1 int,var2 int)(int,int) {
func actionVariables(var1,var2 int)(int,int) {
return var1 + var2,var1-var2
}
函数的参数如果一致,则可在最后一个参数中书写类型
函数返回值名称可指定,可忽略
指定函数返回值名称时,可直接return
1.2.如果2个参数或多个参数的类型一致,可把类型写在最后
func actionVariables(var1,var2 int)(int,int) {
return var1 + var2,var1-var2
}
2.调用
var sum int
var minus int
sum,minus = actionVariables(1,2)
fmt.Println(sum,minus)
实例2.1.定义一个函数[actionVariables2],测试函数多返回值时,设置有名与无名
func actionVariables2(var1,var2 int) (sum int,minus int) {
sum = var1 + var2
minus = var1 - var2
//return sum,minus
return
}
实例2.2.调用
sum,minus = actionVariables2(1,2)
fmt.Println(sum,minus)
不定参数
可变参数…interface{}做为函数参数的使用,通过分析go系统自带的fmt.println讲解可变参数
// 1。定义函数[actionVariables3],可变参数,测试
func actionVariables3(args ...interface{}) {
for _,value := range args {
fmt.Println(key,value)
}
}
// 2.调用
actionVariables3(1,"我是波哥",3.14,true)
可变参数,类似于切片,go语言里有很多,可变参数是go语言的特性
//可变参数...interface{}做为函数参数的类型判断
//1.在函数[actionVariables3],增加功能,判断可变参数的类型
func actionVariables3(args ...interface{}) {
for _,value := range args {
switch value.(type) {
case int:
fmt.Println(value,"int")
case string:
fmt.Println(value,"string")
case float64:
fmt.Println(value,"float64")
case bool:
fmt.Println(value,"bool")
default:
fmt.Println(value,"unknow")
}
}
}
//2.调用
actionVariables3(1,"我是波哥",3.14,true)