3 回答
TA贡献2021条经验 获得超8个赞
你不能。
AFAIK 目前的形式是静态类型的。您要做的是创建一个函数/方法,该函数/方法返回编译时未知的类型。按照设计,go 不允许您创建这样的函数/方法
TA贡献1893条经验 获得超10个赞
这个问题大约有一年的时间,但没有人正确识别问题:AWSApiRetry() 函数签名没有返回。您不能分配没有返回值的函数的返回值。
您打算提供的实际 API(定义具有任意签名的函数)可以使用标准反射包中的函数 MakeFunc() 来完成。
如果您想更具体地了解您观察到的需求,我很乐意提出一个具体的解决方案。
TA贡献1804条经验 获得超2个赞
这是否有助于回答您的部分问题?
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 很棒的答案。无法调用返回未知类型的函数/方法。添加 ElbReady 时会出现错误:
AwsApiretry(func literal) used as value
- 3 回答
- 0 关注
- 93 浏览
添加回答
举报