In Go, as in most languages, spaces do not *have to* delimit tokens. A token ends when the leftmost longest matching token is found, and the rest is placed back in the input buffer for the next token. So
&&& true 1) read & — this can be &, &=, &&, &^, or &^=, so read again 2) read & — we now have &&, can't go further so give && to parser 3) read & — this can be &, &=, &&, &^, or &^=, so read again 4) read space — no match; give the & we have saved to the parser, then ignore the space 5) read "true" (which itself breaks down into steps like the above) I know there are some languages (like Swift) which allow you to create your own operators, and thus have certain rules for significant spaces; to my knowledge, these are in the minority. > On Oct 31, 2016, at 3:45 PM, mhhc...@gmail.com wrote: > > Hi, > > noticed that an instant ago, > > package main > import ( > "fmt" > ) > > func main() { > if true &&& true &&& false { > fmt.Println("ok") > } > } > > Gives this output, > > tmp/sandbox074568120/main.go:8: cannot take the address of true > tmp/sandbox074568120/main.go:8: invalid operation: true && &true (mismatched > types bool and *bool) > tmp/sandbox074568120/main.go:8: cannot take the address of false > > the triple ampersands is parsed as : > true && &true > > No syntax error is reported :/ &&& is not intended, its a typo and should be > reported so. > > In my simple example its still ok because another error pops in to prevent > that. > > But in my real life example it passes, This code builds fine, maybe with side > effects, i m not sure. > func (i *InputResolver) setResult(value interface{}, err error) { > if err!=nil &&& i.LastValue!=nil &&& i.LastErr==nil{ > return // skip the new set as it reports error in producing and that the > last value did produce properly. > } > i.LastValue = value > i.LastErr = err > } > > > > -- > 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 > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- 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.