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.
考虑下面的例子
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.