Advanced go - Use default value as your advantage, append to nil

Today I found a small mistake in our codebase.

The code was like this:

type Foo struct {
    baz []int
}

// ...

func (f *Foo) Fun(a int) {
    if len(f.baz) == 0 {
        f.baz = []int{a}
    } else {
        f.baz = append(f.baz, a)
    }
}

Which is not wrong, but it could be improved.

Appending to a nil slice will work just as well.

The code could be simplified like:

func (f *Foo) Fun(a int) {
    f.baz = append(f.baz, a)
}

This code, not only works, but it is more idiomatic.

Fewer branches and a cleaner control flow.

Whenever possible in go, we should exploit defaults value.