美文网首页
golang真正的三元表达式(泛型实现)

golang真正的三元表达式(泛型实现)

作者: Tenny1225 | 来源:发表于2024-01-28 13:19 被阅读0次

我们知道三元运算符可以做到惰性计算,而函数做不到,golang没有三元运算相关语法,那么我们造一下轮子。


package main
 
type TernaryExpression[T any] struct {
    b bool
}
 
func (t TernaryExpression[T]) Then(r T) TernaryExpression[T] {
    if t.b {
        panic(r)
    }
    return t
}
func (t TernaryExpression[T]) Else(r T) T {
    return r
}
func TE[T any](f func() T) (r T) {
    defer func() {
        if e := recover(); e != nil {
            r = e.(T)
        }
    }()
    r = f()
    return
}
func If[T any](b bool) TernaryExpression[T] {
    return TernaryExpression[T]{b: b}
}
 
func main() {
    x := TE(func() float64 {return If[float64](3>2).Then(3).Else(2)})
    fmt.Println("r", x)
}

相关文章

网友评论

      本文标题:golang真正的三元表达式(泛型实现)

      本文链接:https://www.haomeiwen.com/subject/gouwodtx.html