【Go - 常见的5类函数用法】

函数

函数通过func关键字定义,后跟函数名、参数列表、返回类型。语法如下:

func functionName(parameters) returnType {
    // 函数体
}

示例

func add(x int, y int) int {
    return x + y
}

func swap(x, y string) (string, string) {
    return y, x
}

变参函数

func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

匿名函数

	s := (func () string {
		return "anonymous-function"
	})()
	fmt.Println(s)

**高阶函数,**函数作为参数和返回值

函数也可以作为参数传入 或者 作为返回值传出

// 函数作为参数
func compute(fn func(float64, float64) float64) float64 {
    return fn(3, 4)
}

// 函数作为返回值
func getComputeFunc() func(int, int) int  {
   return func(x, y int) int {
       return x + y
   }
}

闭包


func intSeq() func() int {
    i := 0
    return func() int {
        i++
        return i
    }
}

// 调用
func main() {
    incfunc := intSeq()
    fmt.Println(incfunc())
    fmt.Println(incfunc())
}

闭包本质是对作用域的延伸。
就比如intSeq中的i,如果没有其它地方引用,其会被垃圾回收,但是由于incfunc中有对其的引用,其不能被回收,其生命周期变长了,作用域延伸了。

相关推荐

  1. Go - 常见5函数用法】

    2024-07-12 01:30:04       21 阅读
  2. Go - 常见5循环】

    2024-07-12 01:30:04       25 阅读
  3. Go语言Web框架Gin常见

    2024-07-12 01:30:04       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 01:30:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 01:30:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 01:30:04       57 阅读
  4. Python语言-面向对象

    2024-07-12 01:30:04       68 阅读

热门阅读

  1. kotlin flow collect collectLatest 区别

    2024-07-12 01:30:04       23 阅读
  2. 搜维尔科技:触觉反馈数据手套CyberGlove击鼓测试

    2024-07-12 01:30:04       19 阅读
  3. c语言变量修饰词

    2024-07-12 01:30:04       22 阅读
  4. 文心一言使用指南

    2024-07-12 01:30:04       25 阅读
  5. Redis数据同步

    2024-07-12 01:30:04       26 阅读