¿Cuándo incrustas mutex en struct en Go?

NOTA: Encontré que la palabra 'incrustar' en el título era una mala elección, pero la conservaré.

Veo que mucho código hace esto:

type A struct {
    mu sync.Mutex
    ...
}

Y úsalo así:

a := &A{}

a.mu.Lock()
defer a.mu.Unlock()

a.Something()

¿Es mejor que el mutex local o el mutex global?

a := &A{}

var mu sync.Mutex
mu.Lock()
defer mu.Unlock()

a.Something()

¿Cuándo debo usar anterior o posterior?

Respuestas a la pregunta(1)

Su respuesta a la pregunta