将函数体/ defintion作为参数传递给golang中的函数调用

时间:2017-03-07 11:09:39

标签: function go parameter-passing

我最近在使用golang时遇到了以下问题。是否可以将函数体传递给函数调用,如javascript。 例如setTimeout(function(i){console.log("input:", i)}, 1000).

将匿名函数传递给javascript中的另一个函数非常常见。我想知道是否一样吗?

package main

import (
    "fmt"
)

type HandlerFunc func(int)

func main() {
    // define a function as object/variable?
    hnd := func(in int){
        fmt.Println("func handler returns input", in);
    }
    a:=HandlerFunc(hnd) //pass function object/variable to type HandlerFunc
    a(10)

    // pass function body directly to type HandlerFunc
    b:=HandlerFunc(func(_in int){
        fmt.Println("another func handler returns input", _in);
    })
    b(100)

    fmt.Println("Hello, playground")
}

它们都有效,但我想知道这两种用途之间是否有任何区别,哪一种更可取?

1 个答案:

答案 0 :(得分:1)

没有区别,请使用最适合您风格的那种。