目前为止最恨的golang的这个缺失属性,这个功能很常用,绝大部分高级语言都支持,为毛golang不提供呢?
虽然math库里面有min(float, float) float的函数,但没有针对int的,实际上常用的就是int。
每次我都得自己在项目的common模块里自己定义这两个函数。
package main
import (
"fmt"
)
// Define ternary operate function
func ternary(expr bool, whenTrue, whenFalse interface{}) interface{} {
if expr == true {
return whenTrue
}
return whenFalse
}
// Define min/max function
func min(a, b int) int {
i := ternary(a <= b, a, b)
r, _ := i.(int)
return r
}
func max(a, b int) int {
i := ternary(a >= b, a, b)
r, _ := i.(int)
return r
}
func main() {
i := min(1, 5)
fmt.Printf("%d\n", i)
j := max(2, 6)
fmt.Printf("%d\n", j)
s := ternary("aaa" == "aaa", "ccc", "ddd")
fmt.Printf("%s\n", s)
}
谢谢哈。
有疑问加站长微信联系(非本文作者)