On Tue, Oct 6, 2020 at 10:28 AM tapi...@gmail.com <tapir....@gmail.com> wrote:
>
> IMO, the bar function is cleaner and more readable than the foo function.
> How do you think?
>
>     func foo() {
>         if vs := f(); len(vs) == 0 {
>         } else {
>             for _, v := range vs {
>             }
>         }
>
>         if vs := f(); len(vs) == 0 {
>         } else {
>             switch {
>             case len(bs) == 0:
>             case len(bs) == 1:
>             default:
>               }
>         }
>     }
>
>     // vs.
>
>     func bar() {
>         if vs := f(); len(vs) == 0 {
>         } else for _, v := range vs {
>         }
>
>         if vs := f(); len(vs) == 0 {
>         } else switch {
>         case len(vs) == 0:
>         case len(vs) == 1:
>         default:
>         }
>     }

Well, why stop there?  Why not

    if vs := f(); len(vs) == 0 {
    } else f2()

    if vs := f(); len(vs) == 0 {
    } else x = y

There is a simple rule:
    if <condition> <block> [else <block>]
In fact, for a while in the very early days of Go, that was the only
rule.  But experience showed that people naturally want to write
if/else if/else, and having to add extra braces was frustrating, and
they tended to stack up.  So the rule was extended to (roughly):
    if <condition> <block> [else if <condition> <block> [else <block>]]

There's no obvious need to extend the rule in any other way.  It's not
something that people are running into.

Ian

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcW1brUebx3M-r3DZTJ5TZ-96XcmZCgpYgxfQ1Oh8auHuA%40mail.gmail.com.

Reply via email to