Rozważmy następujący fragment: GoUżywaj idiomu "przecinek" lub wskaźnika powrotu?
func sheep() (int, bool) {
return 1, true
}
func main() {
if dolly, ok := sheep() {
//do something
}
}
Jak czytam na 'Effective Go' ten nazywany jest 'przecinek ok' idiom. O ile wiem, to jest używane do odróżnienia od rzeczy "znalezionej" i "nie znalezionej".
To samo można osiągnąć poprzez:
type Sheep struct {}
func sheep() *Sheep {
return &Sheep{}
}
func main() {
if dolly := sheep(); dolly != nil {
//do something
}
}
Ten ostatni przykład wydaje się spełniać ten sam cel, a może nawet ładniejszy. W przykładzie "przecinek" przypisanie jest poprawne tylko w bloku if.
Być może brakuje mi pewnych rozważań. Który wzór jest preferowany? I dlaczego?
Krótki przykład: http://play.golang.org/p/ATxvle38iE
Drugim przykładem jest nieprawidłowy iść – fabrizioM
Dobrze punktowane. Poprawiłem to. – harm