Golang 之 函数

函数

函数特点

无需声明原型。
支持不定 变参。
支持多返回值。
支持命名返回参数。 
支持匿名函数和闭包。
函数也是一种类型,一个函数可以赋值给变量。

不支持 嵌套 (nested) 一个包不能有两个名字一样的函数。
不支持 重载 (overload) 
不支持 默认参数 (default parameter)。

函数声明

func function_name(参数)(返回值){
	//函数体
}
// 例子1
func get_sum(x, y int)(sum int){
	sum := x + y
	return sum
}
// 例子2 没有参数和返回值
func f1(){
	fmt.Println("hello")
}
// 例子3 返回值是函数
func f2()(f func() int){
	// 函数内只能是匿名函数
	funcniming := func()(int){
		return 12
	}
	retrun funcniming
}
  • 一个或多个参数
func f(a string, y...int)(int){
	fmt.Println(y) // [1,2,3,4], 接收的参数为slice类型
}
f("hello", 1, 2, 3, 4)
  • 0个或多个参数
func myfunc(args ...int) {    //0个或多个参数

  }

匿名函数

  • 匿名函数是指不需要定义函数名的一种函数实现方式。
  • 匿名函数由一个不带函数名的函数声明和函数体组成。匿名函数的优越性在于可以直接使用函数内的变量,不必申明。
func main() {
    getsum:= func(x, y int) int {
        return x + y
    }
    fmt.Println(getsum(4, 2))	// 6
}
  • 因函数不可以嵌套,所哟在函数对内部只能使用匿名函数。

闭包

  • 所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
package main

import (
    "fmt"
)

func a() func() int {
    i := 0
    b := func() int {
        i++
        fmt.Println(i)
        return i
    }
    return b
}

func main() {
    c := a()
    c()
    c()
    c()

    a() //不会输出i
}
  • 闭包复制的是原对象指针,这就很容易解释延迟引用现象。

递归

  • 递归,就是在运行的过程中调用自己。 一个函数调用自己,就叫做递归函数。

1.子问题须与原始问题为同样的事,且更为简单。
2.不能无限制地调用本身,须有个出口,化简为非递归状况处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(Golang)是一种开源的编程语言,它具有简洁、高效和并发性强的特点。在Go语言中,函数是一等公民,可以像其他类型的值一样进行传递和操作。 下面是介绍Golang实现函数的几个关键点: 1. 函数定义:使用关键字`func`来定义函数,语法如下: ``` func 函数名(参数列表) 返回值列表 { // 函数体 } ``` 例如,定义一个计算两个整数之和的函数: ``` func add(a, b int) int { return a + b } ``` 2. 函数参数:函数可以接受零个或多个参数,参数之间用逗号分隔。参数可以指定类型,例如`a, b int`表示两个整数类型的参数。如果多个参数的类型相同,可以只在最后一个参数后面指定类型。 例如,定义一个计算两个整数之差的函数: ``` func subtract(a, b int) int { return a - b } ``` 3. 函数返回值:函数可以返回一个或多个值。返回值列表放在函数名后面的括号中,并指定返回值的类型。如果函数没有返回值,可以省略返回值列表。 例如,定义一个计算两个整数之积和商的函数: ``` func multiplyAndDivide(a, b int) (int, float64) { return a * b, float64(a) / float64(b) } ``` 4. 匿名函数:在Go语言中,可以使用匿名函数,即没有函数名的函数。匿名函数可以直接赋值给变量,也可以作为参数传递给其他函数。 例如,定义一个匿名函数并将其赋值给变量: ``` add := func(a, b int) int { return a + b } ``` 5. 函数作为参数和返回值:在Go语言中,函数可以作为参数传递给其他函数,也可以作为函数的返回值。 例如,定义一个接受函数作为参数的函数: ``` func operate(a, b int, operation func(int, int) int) int { return operation(a, b) } ``` 以上是Golang实现函数的基本介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值