if a := rwc.RemoteAddr(); a != nil {
c.RemoteAddr = a.String()
}

2 цитатs из описания языка:
1.
Short variable declarations may appear only inside functions.
In some contexts such as the initializers for if, for, or switch statements, they can be used to declare local temporary variables.
2. Each if, for, and switch  statement is considered to be in its own implicit block.

a - LOCAL(в пределах if) TEMPORARY VARIABLE

Что здесь плохого?