duankao4489 2018-12-27 05:54
浏览 190
已采纳

func关键字后有两个函数名-这是什么?

How to understand the last function? Why do we use different function names after func declaration? How to use those function? Using it like shown in the main function is wrong.

package main

import (
    "fmt"
)

func main() {
    fmt.Println(incrementer()) //error
}

func incrementer() func() int { //what is it?!
    i := 0
    return func() int {
        i++
        return i
    }
}
  • 写回答

2条回答 默认 最新

  • dongrandi8411 2018-12-27 05:58
    关注

    Simply, since incrementer() returns a function, the function that it returns must be called as well. You can do so like this:

    functionFoo := incrementer()
    fmt.Println(functionFoo())
    

    Or this shorthanded way:

    fmt.Println(incrementer()())
    

    Which achieves the same thing, you just immediately execute the function that incrementer() returns.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用hc 05,做蓝牙控制小车 小车只能说初始遥控方向影响,后续不能更改
  • ¥15 51单片机怎么把每次输入键值保存到数组作为我的确认键的判断条件呢
  • ¥45 easy photo不能使用,求帮助
  • ¥15 c语言字符串单词入门问题报错
  • ¥30 我现在是双非人工智能专业不知道要不要转到软件工程专业
  • ¥15 请问12脉波整流机组的外特性曲线具体是如何推导
  • ¥15 abaqus里的python算法
  • ¥100 如何在思科模拟器中进入CEF模式
  • ¥15 Simulink 仿真如何使用MATLAB function模块获取到仿真过程中某一仿真时刻输入到模块的函数的值?
  • ¥50 关于#微信小程序#的问题:微信小程序支持h5实现webrtc h264 h265低延迟传输渲染,能付费帮我们解决一下吗