I don't think it's possible to come up with fixed rules that don't fail, which is why I like gofmt
's approach of keeping the general structure of the input code, instead of overriding it with rules.
So my rule would be don't change the number of lines. If a construct is in one line, keep it in one line (but tidy up spaces after commas, etc.) If a construct is in multiple lines, make sure the indentation is even, but don't unwrap them.