golang在两个uint值上使用math.max的正确方法是什么?

golang在两个uint值上使用math.max的正确方法是什么?,go,Go,这就是我做的,非常丑陋 使用math.Max进行两个uint的正确方法是什么 vs.curView.Viewnum =uint(math.Max(float64(args.Viewnum+1), float64(vs.curView.Viewnum))) 存在math.Max的主要原因是为了确保正确处理IEEE浮点的一些特殊情况(正负无穷大、NaN和有符号零) 这些问题与简单整数无关,因此您最好使用显而易见的实现。比如: if args.Viewnum+1 > vs.curView.Vi

这就是我做的,非常丑陋

使用
math.Max
进行两个uint的正确方法是什么

vs.curView.Viewnum =uint(math.Max(float64(args.Viewnum+1), float64(vs.curView.Viewnum)))

存在math.Max的主要原因是为了确保正确处理IEEE浮点的一些特殊情况(正负无穷大、
NaN
和有符号零)

这些问题与简单整数无关,因此您最好使用显而易见的实现。比如:

if args.Viewnum+1 > vs.curView.Viewnum {
    vs.curView.Viewnum = args.Viewnum+1
}

虽然这个问题很老了,但也许可以节省一些人的时间和精力。与往常一样,可以通过
go-get
和通过URL导入来获取

用法:

导入(
“fmt”
“/go imath/ix”//int类型的函数
)
...
fmt.Println(ix.Max(100152))//输出:152
fmt.Println(ix.Maxs(234,55,180))//输出:234
fmt.Println(ix.MaxSlice([]int{2,29,8,-1}))//输出:29

不幸的是,您必须为UINT编写自己的版本,因为我担心这是一个愚蠢的设计。在我看来,拥有一个通用的max()函数并不是一件奢侈的事情。无论如何谢谢James。当Go获得某种形式的泛型时,也许我们会看到。很遗憾,作为现代编程语言的Golang不支持泛型。