golang 函数

go 函数

go函数的规范
func g(){   ///大括号的顺序不能乱
    
}

函数类型

指定函数类型
1.type FUNCTION func()

2.type FUNCTION1 func(int,int)

3. type FUNCTION2 func(int,int)int

函数返回

1. func f1(s int)int{
    retrun s+2
}
2. func f1(s int,b int)(sum int){
    sum = s+b
    return
}
3. func f2(a int,b int ,c int){
    a b,cb:=1,2,3
    return
}
a,b,c:=f2()

匿名函数

  • 匿名内部函数 func main(){ a:=10 b:=20 // 匿名函数 带返回值 func (a int b int){ retrun(a+b) }(a,b) 这是直接使用匿名

    // 这是将匿名函数赋予变量
      f:=func (a int, b int){
          return(a+b)
      }

    }

    //若是无参无返匿名函数 func(){} = {}

闭包

格式为:func 函数名() 返回函数类型(){}

举例:
func f1() func() int{
    var a int
    return func() int{
        a++
        return a
    }
}    封装
func main{
    f:=f1()
    fmt.Println(f())
} 调用
    闭包需要声明接收参数类类型
    
///////////////////////////////////

1. 闭包函数可以相当于生成器 会保留上次调用运行的变量结果继续下一次运行 
示范如下:
func squares() func() int {
    var x int
    return func() int {
        x++
        return x * x
    }
}

func main() {
    f := squares() //返回函数指针
    fmt.Printf("%v\n", f)
    fmt.Println(f())
    fmt.Println(f())
    fmt.Println(f())
    fmt.Println(f())
    fmt.Printf("%v\n", f)
}
运行结果
0x401620
1
4
9
16
0x401620

递归函数

举例:
var sum int = 1

func digui(a int) int {

	if a <= 1 {
		return sum
	}
	sum += a
	fmt.Println(sum, a)
	return digui(a - 1)
}


func main() {
	d := digui
	fmt.Println(d(6000))
}

匿名函数

规则 fun(参数)返回值 返回类型{ //参数可加可不加 返回值与类型都是
    代码块
}()  // 这个地方假如加括号为匿名函数调用 不加不自动使用

特性注意点
1. 闭包函数可以相当于生成器 会保留上次调用运行的变量结果继续下一次运行
### Golang函数签名的相关知识 #### 什么是函数签名? 在 Go 语言中,函数签名为函数的定义提供了标准化的形式。它描述了一个函数的核心特征,包括名称、输入参数列表以及返回值类型[^3]。 #### 函数签名的基本结构 一个典型的函数签名由以下几个部分组成: 1. **函数名**:用于标识函数2. **参数列表**:指定函数接收的输入数据及其对应的类型。 3. **返回值类型**:声明函数执行完成后会返回的数据类型。 以下是函数签名的一般形式: ```go func functionName(parameter1 type1, parameter2 type2) (returnType1, returnType2) ``` #### 示例分析 以下是一个简单的函数签名示例,展示如何定义一个具有具体参数和返回类型的函数: ```go package main import "fmt" // 定义一个实现两数相加功能的函数 func addNum(x int, y int) int { ret := x + y return ret } func main() { result := addNum(5, 7) fmt.Println("Result:", result) } ``` 在这个例子中,`addNum` 的函数签名为 `func(x int, y int) int`,表示该函数接受两个整型参数并返回一个整型结果[^2]。 #### 多返回值的函数签名 Go 支持多返回值的功能,这使得函数设计更加灵活。例如,以下代码片段展示了带有多个返回值的函数签名: ```go package main import "fmt" // 返回商和余数 func divide(dividend float64, divisor float64) (float64, float64) { quotient := dividend / divisor remainder := dividend % divisor return quotient, remainder } func main() { q, r := divide(10, 3) fmt.Printf("Quotient: %.2f, Remainder: %.2f\n", q, r) } ``` 在此处,`divide` 的函数签名为 `func(float64, float64) (float64, float64)`,表明其接收两个浮点数作为参数,并返回两个浮点数值[^5]。 #### 匿名函数函数变量 除了常规命名函数外,Go 还支持匿名函数的概念。这些无名函数可以直接赋值给变量或者立即执行。下面是一段关于匿名函数的示例代码: ```go package main import "fmt" func main() { // 将匿名函数赋值给变量 f 并调用 var f func(int, int) int f = func(a, b int) int { return a * b } fmt.Println(f(3, 4)) // 输出 12 // 立即执行匿名函数 sum := func(numbers ...int) int { total := 0 for _, num := range numbers { total += num } return total }(1, 2, 3, 4, 5) fmt.Println(sum) // 输出 15 } ``` 上述代码说明了如何创建和使用匿名函数来简化逻辑处理过程[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值