美文网首页golang
golang 函数和闭包

golang 函数和闭包

作者: 王义杰 | 来源:发表于2019-07-10 18:25 被阅读0次

接触golang有些时间了,以前磕磕碰碰的勉强写过几个小程序,最近工作又亲近golang,就想着再回头巩固一下,曾经遇到过几次的问题又再次遇到了,golang的函数定义格式是这样的:

func function_name( [parameter list] ) [return_types] {
   函数体
}

函数体之上的哪一行总共分为三个部分,依次是声明关键字,函数名和参数,返回值。函数名和参数是一个整体所以归为一组方便识别的,有时会遇到一些异类的形式,今天就遇到这样的:

func fib() func() int {
    a, b := 0, 1
    return func() int {
        a, b = b, a+b
        return a
    }
}

比常见的多了一段,让人有点蒙圈了,再回顾到闭包的知识点才解决此困惑,说一下我自己对闭包的总结,闭包就是函数返回一个匿名函数,看一个例子:

package main

import "fmt"

func returnNum() func() (int, int)  {
    return func() (int, int) {
        return 0, 1
    }
}
func main()  {
    q := returnNum()
    a, b := q()
    
    fmt.Println(a, b)
}

在强类型语言里面,函数返回值类型是不可少的,闭包误导人的地方就在于它的返回值定义,返回一个匿名函数,函数得注明返回值,返回值和函数名之间习惯上会加空格,这就造成闭包的形式有别于普通函数,上面这个闭包双返回值也是有些耐人寻味的。少见多怪,主要还是因为我是个业余玩家。

还有方法:结构体方法,对象方法也是初学者不易理解的。

相关文章

  • golang 函数和闭包

    接触golang有些时间了,以前磕磕碰碰的勉强写过几个小程序,最近工作又亲近golang,就想着再回头巩固一下,曾...

  • Go中的函数

    在Golang中函数有包内的函数,有包外的函数,还有闭包函数(匿名函数) 包内函数是以小写字母开头的,包外函数是以...

  • golang:函数闭包

    From wiki 闭包在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure...

  • golang函数闭包

    定义 Go 语言支持匿名函数,可作为闭包。匿名函数是一个"内联"语句或表达式。匿名函数的优越性在于可以直接使用函数...

  • 08. Go极简教程 函数及闭包

    Golang中, 函数是一等公民, 以下简要描述函数的使用 函数的声明 闭包 引用官方的解释: Go 函数可以是闭...

  • golang-闭包

    最近学习golang的匿名函数 发现闭包还是有点意思 闭包基本概念:闭包是可以包含自由(未绑定到特定对象)变量的代...

  • rust 闭包与同步

    rust 闭包与同步 rust 闭包 rust闭包中主要包括两个部分,闭包参数和闭包环境变量。闭包函数和函数参数使...

  • 函数对象和闭包

    函数对象和闭包 一) 函数对象 示例: 二)函数嵌套 三)闭包函数

  • 面试题(day-2)

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,...

  • Swift-闭包

    闭包的特点:一个函数有权访问另外一个函数内的变量和参数 闭包—匿名函数 结尾闭包 衍生 内容捕获 闭包和函数是引用类型

网友评论

    本文标题:golang 函数和闭包

    本文链接:https://www.haomeiwen.com/subject/pfzdkctx.html