3 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
你不能。
AFAIK 目前的形式是靜態(tài)類型的。您要做的是創(chuàng)建一個(gè)函數(shù)/方法,該函數(shù)/方法返回編譯時(shí)未知的類型。按照設(shè)計(jì),go 不允許您創(chuàng)建這樣的函數(shù)/方法

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
這個(gè)問題大約有一年的時(shí)間,但沒有人正確識(shí)別問題:AWSApiRetry() 函數(shù)簽名沒有返回。您不能分配沒有返回值的函數(shù)的返回值。
您打算提供的實(shí)際 API(定義具有任意簽名的函數(shù))可以使用標(biāo)準(zhǔn)反射包中的函數(shù) MakeFunc() 來完成。
如果您想更具體地了解您觀察到的需求,我很樂意提出一個(gè)具體的解決方案。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
這是否有助于回答您的部分問題?
package main
import "fmt"
func main() {
GetEnvState := func(i ...int) {
fmt.Println(i)
}
AwsApiretry := func(awsFunc func()) {
awsFunc()
}
AwsApiretry(func() { GetEnvState(1) }) // prt [1]
AwsApiretry(func() { GetEnvState(1, 2) }) // prt [1 2]
//ElbReady := AwsApiretry(func() { GetEnvState(1, 2, 3) })
//fmt.Println(ElbReady) // AwsApiretry(func literal) used as value
}
但我也同意@Cerise 和@Kelsnare 很棒的答案。無法調(diào)用返回未知類型的函數(shù)/方法。添加 ElbReady 時(shí)會(huì)出現(xiàn)錯(cuò)誤:
AwsApiretry(func literal) used as value
- 3 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報(bào)