copiar valores do ponteiro * a = * b em 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 ainda está vazio, eu tenho que fazer assim

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

agoraa é o mesmo queb

Por que e como posso copiar*b para*a diretamente?