golang
函数使用关键字func
定义,它可以指定返回值类型,函数可以返回多个值,以逗号分隔。
func funcname(params)returnType {
return ...;
}
封装一个加法的函数,可以无限制的添加参数进行加法运算。
func main() {
num := myfunc(100, 243, 500, 8)
fmt.Println(num)
}
//加法函数
func myfunc(params ...int) int {
i := 0
for _, value := range params {
//fmt.Println(value)
i += value
}
return i
}
如果需要设置不同类型的参数,可以将参数的数据类型设置为接口interface{}
类型。
func main(){
mp := map[string]interface{}{
"age": 10,
"name": "kins",
}
myfunc2(12, "hello", mp)
}
func myfunc2(params ...interface{}) {
for _, value := range params {
fmt.Printf("value:%v\n", value)
}
}
没有函数名称的函数。匿名函数有一个比较好的功能就是定义并调用。
sum := func(a int, b int) int {
return a + b
}(10, 20)
fmt.Println(sum)
闭包函数可以捕获外部函数内的局部变量。
func sum(a int ,b int) int {
return func() int {
return a+b
}
}
在函数内部调用该函数。
func sum(a int) int {
if a>0 {
return a+sum(a-1)
}else {
return 0
}
}
在函数内部调用自己,如果没有条件,则陷入死循环。
func looper(msg string) {
fmt.Println(msg)
looper(msg)
}