Si consideri il seguente frammento di Go:Utilizzare l'idioma "comma ok" o il puntatore di ritorno?
func sheep() (int, bool) {
return 1, true
}
func main() {
if dolly, ok := sheep() {
//do something
}
}
Come ho letto su 'Effective Go' Questa è chiamata la 'virgola ok' idioma. Per quanto posso dire, questo è usato per distinguere da una cosa trovata e non trovata.
Lo stesso può essere raggiunto attraverso:
type Sheep struct {}
func sheep() *Sheep {
return &Sheep{}
}
func main() {
if dolly := sheep(); dolly != nil {
//do something
}
}
Quest'ultimo esempio sembra svolgere lo stesso scopo, forse ancora più bello. Con l'esempio 'comma ok' l'assegnazione è valida solo nel blocco if.
Forse mi mancano alcune considerazioni. Quale modello è preferito? E perché?
Un breve esempio: http://play.golang.org/p/ATxvle38iE
Il secondo esempio non è valido andare – fabrizioM
Bene maculato. L'ho corretto – harm