copiar los valores de puntero * a = * b en golang

type T struct {
    Id int
    Name string
}

func Copy(a *T, b *T) error {
    b.Id=5
    b.Name="gert"
    a = b
    return nil
}

a Todavía está vacío, tengo que hacerlo así.

func Copy(a *T, b *T) error {
    b.Id = 5
    b.Name = "gert"
    a.Id = b.Id
    a.Name = b.Name
    return nil
}

ahoraa es lo mismo queb

¿Por qué y cómo puedo copiar?*b a*a ¿directamente?