2015-01-29 10 views
8

Questo è quello che faccio, è estremamente brutto. qual è il modo giusto per usare math.Max ​​per 2 uint s?golang qual è il modo giusto per usare math.max su due valori uint?

Grazie

vs.curView.Viewnum = uint (Math.max (float64 (args.Viewnum + 1), float64 (vs.curView.Viewnum)))

+1

purtroppo dovreste scrivere il proprio versione per uints per quanto mi riguarda –

+0

[Non abusare Math.max/Math.min] (https: //mrekucci.blogspot .com/2015/07/dont-abuse-mathmax-mathmin.html) –

risposta

8

La ragione principale math.Max esiste è per garantire che alcuni dei casi speciali di virgola mobile IEEE vengano gestiti correttamente (infinito positivo e negativo, NaN e zeri firmati).

Questi problemi non sono rilevanti per i numeri interi semplici, quindi si può anche usare l'implementazione ovvia. Qualcosa di simile:

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

design davvero stupido a riguardo. Una funzione max() generica non è un lusso da avere ..... secondo me. Comunque. Grazie James. – BufBills

+1

Beh, quando Go ottiene qualche forma di generici, forse ne vedremo uno. –

+2

È un peccato che Golang come linguaggio di programma MODERN non supporti i generici. – thinkhy

Problemi correlati