2015-01-29 13 views
8

Yaptığım şey bu, aşırı çirkin. 2 uint s için math.Max ​​kullanmanın doğru yolu nedir?golang math.max'ı iki uint değerinde kullanmanın doğru yolu nedir?

sayesinde

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

+1

ne yazık ki kadarıyla bana kalırsa –

+0

[math.Max ​​/ math.Min kötüye kullanmayın] (https uints için kendi versiyonunu yazmak zorunda ediyorum .com/2015/07/dont-abuse-mathmax-mathmin.html) –

cevap

8

math.Max mevcut temel sebebi IEEE kayan noktalarının bazı özel durumlarının doğru bir şekilde işlenmesini sağlamak için (pozitif ve negatif sonsuzluk, NaN ve imzalı sıfırlar).

Bu sorunlar basit tam sayılarla ilgili değildir, bu nedenle de yalnızca açık uygulamayı kullanabilirsiniz. Bir şey gibi: //mrekucci.blogspot:

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

bu konuda gerçekten aptalca bir tasarım. Genel bir max() işlevi benim düşüncemde olması gereken bir lüks değildir. neyse. Teşekkürler James. – BufBills

+1

Go, bir çeşit jenerik aldığında, belki bir tane göreceğiz. –

+2

Bir MODERN program aracı olarak Golang'ın jenerikleri desteklememesi utanç verici. – thinkhy

İlgili konular