golang中访问指针值类型的区别

Difference between the types of accessing pointer values in golang

考虑下面的例子

type Employee struct {
    Firstname string
    // other fields
}

func (e *Employee) SetName(name string) {
   e.Firstname = name // type 1
   (*e).firstName = name // type 2
}

此处访问属性的类型 1 和类型 2 方式有何区别?我们什么时候应该使用一个而不是另一个?

类型 1 是类型 2 的 shorthand。使用 shorthand 表示法。

这是quote from the specification

if the type of x is a defined pointer type and (*x).f is a valid selector expression denoting a field (but not a method), x.f is shorthand for (*x).f.