Consider var x *[N]*T
What is the type of *x[0]? *T or T? Only the parentheses can disambiguate it: (*x)[0] vs *(x[0]). On Thu, Jul 20, 2017, 00:28 <adrian.pr...@gmail.com> wrote: > A question on Stack Overflow led me to carefully examine the spec and I > feel like there may be some detail that's missing - the behavior is easy > enough to work with, but it's effectively undefined according to the > language spec. Specifically, with a variable x of type *[]string for > example, *x[0] will not work because it is evaluated as *(x[0]), not as > (*x)[0]. This is unexpected based on the spec because the only > specifications that could apply are the general order of evaluation, which > is left to right (not the case here), and operator precedence which states > that pointer dereference is a unary operator and unary operators have > highest precedence (again clearly not what's happening). > > The closest it comes to explaining this behavior is in the section on > address operators, which implies that the address operator & applies to the > entire slice expression next to it (or struct field selector, etc). This > leaves one to assume the same implication applies to the pointer > dereference operator as well. > > Is there something covering this that I glossed over reading the spec? If > it's not just something I missed, is this worth clarifying in the spec, > without changing the behavior (purely a documentation change)? > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- -j -- -j -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.