2017-02-27 34 views
0

對於下面的代碼:轉到:是否有可能返回指向函數

package main 

import "fmt" 

type intFunc func(int) int 

var t = func() intFunc { 
     a := func(b int) int { return b} 
     return a 
    } 

func main() { 
    fmt.Println(t()(2)) 
    } 

有沒有辦法將指針返回功能,而不是直接的功能? (類似return &a)?

操場是在這裏:https://play.golang.org/p/IobCtRjVVX

+0

是的,但爲什麼你需要/想要?函數是第一類,即使我應該檢查程序集,它們可能表現得比數據更像引用類型。 –

+0

@EliasVanOotegem:你可能希望能夠傳遞一個函數指針作爲參數來設置。這與您需要指向指針的指針類似。 – JimB

+0

@JimB:足夠公平:在指針參數上設置一個值。但去有多個返回值,我很少設置參數值,因爲如果我真的想/需要,我可以返回2或3個值。 OP是特別詢問_returning_指向函數的指針 –

回答

2

是的,只要你正確轉換類型:

https://play.golang.org/p/3R5pPqr_nW

type intFunc func(int) int 

var t = func() *intFunc { 
    a := intFunc(func(b int) int { return b }) 
    return &a 
} 

func main() { 
    fmt.Println((*t())(2)) 
} 

而且沒有指定類型:

https://play.golang.org/p/-5fiMBa7e_

var t = func() *func(int) int { 
    a := func(b int) int { return b } 
    return &a 
} 

func main() { 
    fmt.Println((*t())(2)) 
} 
相關問題