if-else-if-else v #Go

Publikováno 11-02-2016 08:37:54

Ve většině jazyků z rodiny C se větvění provádí pomocí if-else. Klasicky to funguje (např. v Go) takto.

if cosi > dalsiCosi {
   log.Println("cosi je větší než dalsiCosi.")
} else {
   log.Println("cos je menší než dalsiCosi.")
}

Takto to funguje dobře. Co když ale chceme naspat něco většího?

if cosi > dalsiCosi && time.Weekday() == time.Monday {
   log.Println("Je pondělí a cosi je větší než dalsiCosi.")
} else if cosi > dalsiCosi && time.Weekday() == time.Tuesday  {
   log.Println("Je úterý a cosi je větší než dalsiCosi.")   
} else {
   log.Println("Není pondělí a úterý, nebo cosi je menší než dalsiCosi, nebo tak něco v tom smyslu.")
}

Go ovšem nabízí tuto variantu namísto sestavy if-else-if-else.

switch {
   case cosi > dalsiCosi && time.Weekday() == time.Monday :
      log.Println("Je pondělí a cosi je větší než dalsiCosi.")
   case cosi > dalsiCosi && time.Weekday() == time.Tuesday :
      log.Println("Je úterý a cosi je větší než dalsiCosi.")
   default:
      log.Println("Něco úplně jiného.")
}

Osobně preferuji tento zápis, ale jako u všeho, volba je na vás.

comments powered by Disqus