美文网首页
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