The selector expression (e.g. x.f) does that:
Selectors automatically dereference pointers to structs. If
xis a pointer to a struct,
x.yis shorthand for(*x).y; if the fieldyis also a pointer to a struct,x.y.zis
shorthand for(*(*x).y).z, and so on. Ifxcontains an anonymous field of type*A, where
Ais also a struct type,x.fis a shortcut for(*x.A).f.
The definition of the index expressions specifies that an array pointer may be indexed:
For a of pointer to array type:
a[x]is shorthand for(*a)[x]