golang函数

Go语言函数详解

一、函数语法

func 函数名(形参列表) (返回值列表){

          ......

      return 返回值

}

 

例如:

package main
import "fmt"

func test_func(n1 int,n2 int) (int){
    var ret int 
    ret = n1 + n2
    return ret
}


func main(){
    var f int
    f = test_func(1,3)
    fmt.Printf("Type: %T Value: %v\n",f,f)

}

##结果##
Type: int Value: 4

  

二、递归函数

 

例子

package main
import "fmt"

func digui_func(n1 int){
    if n1 > 2 {
        n1--
        fmt.Println(n1)
        digui_func(n1)
    }
}


func main(){
    digui_func(5)
}

##结果##
4
3
2

  

 三、init函数(初始化函数)

 

没一个源文件都可以包含一个init函数,init函数校准main函数执行前执行。

例子:

package main
import "fmt"

func init(){
    fmt.Println("init.....")
}

func main(){
    fmt.Println("main.....")
}

##结果##
init.....
main.....

  

四、匿名函数

例子:

package main
import "fmt"

func main(){
    res := func(n1,n2 int) int{
        return n1 + n2
    }
    
    var s1 int
    var s2 int
    s1 = res(1,2)
    fmt.Println(s1)
    s2 = res(3,4)
    fmt.Println(s2)
}

##结果##
3
7

  

全局匿名函数

 

例子:

package main

var (
    res := func(n1,n2 int) int{
        return n1 + n2
    }

)

  

五、闭包函数

例子:

package main 
import "fmt"

func bibao() func (int) int {
    var n int = 10
    return func (x int) int {
        n = n + x
        return n
    }
}

func main(){
    f := bibao()
    f1 := bibao()
    fmt.Println(f(1))
    fmt.Println(f1(2))

}

##结果##
11
12

  

 

六、函数的defer

为了在函数执行完成后,及时释放资源,go的设计者提供了defer(延时机制)

适合用再关闭文件、关闭数据库连接等

 

例子:

package main
import "fmt"


func test() int {
    defer fmt.Println("s1")
    defer fmt.Println("s2")
    var ss int = 10
    fmt.Println("s3")
    return ss
}

func main(){
    ret := test()
    fmt.Println(ret)
}

##结果##
s3
s2
s1
10

  

转载于:https://www.cnblogs.com/zhangb8042/p/10510762.html

### 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]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值