问题内容 我试图在我的函数中允许一个允许多个返回元组的回调参数。为了实现这一点,我使用泛型来定义回调的参数类型。 func get[ in any, out any,
我试图在我的函数中允许一个允许多个返回元组的回调参数。为了实现这一点,我使用泛型来定义回调的参数类型。
func get[
in any,
out any,
translatefn func(in) out | func(in) (out, error),
](
input in,
translate translatefn,
) (*out, error) {
// call translate to convert the input to the output.
// if translate is an erroring function, make sure the error is
// forwarded to the response of this function.
}
由于 translatefn 仅限于这两种返回类型中的任何一个(out
或 (out, error)
),我认为我能够调用它。
我想做的是类似下面的事情,但是我不能,因为我无法在 translate
参数上使用类型断言。
invalid operation: cannot use type assertion on type parameter value translate (variable of type translatefn constrained by func(in) out|func(in) (out, error))
func Get[
In any,
Out any,
TranslateFn func(In) Out | func(In) (Out, error),
](
input In,
translate TranslateFn,
) (*Out, error) {
if erroringFn, isErroringTranslateFn := translate.(func(In) (Out, error)); isErroringTranslateFn {
out, err := erroringFn(input)
if err != nil {
return nil, err
}
return &out, nil
}
if nonErroringFn, isNonErroringTranslateFn := translate.(func(In) Out); isNonErroringTranslateFn {
out, err := nonErroringFn(input)
if err != nil {
return nil, err
}
return &out, nil
}
panic("translate function must be either func(In) (Out, error) or func(In) Out")
}
如果没有类型断言,我将如何调用此回调,或确定提供了哪些通用变体?
首先将其包装到接口中,然后进行类型断言(或类型切换)。例如。 any(v).(t)
func Get[
In any,
Out any,
TranslateFn func(In) Out | func(In) (Out, error),
](
input In,
translate TranslateFn,
) (*Out, error) {
switch f := any(translate).(type) {
case func(In) (Out, error):
out, err := f(input)
if err != nil {
return nil, err
}
return &out, nil
case func(In) Out:
out := f(input)
return &out, nil
}
panic("shouldn't happen")
}
以上就是如何执行类型为受多个返回类型约束的泛型类型的回调?的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: 如何执行类型为受多个返回类型约束的泛型类型的回调?
本文链接: https://www.lsjlt.com/news/563862.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0