You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
package main
import "log"
func main() {
if T{}.Name() == "T" {
log.Println("T")
}
}
type T struct {}
func (t T) Name() string { return "T" }
I'd like to mention, that compiling with new(T) or extra parenthesis around T{}.Name() was successful. Seems to me that if T{ was parsed as beginning of the if scope.
At a first glance seems like two situations can be distinguished by having/not having a method call after parenthesis is closed
What did you expect to see?
Code compiled successfully
What did you see instead?
./prog.go:6:8: syntax error: unexpected . at end of statement
./prog.go:9:1: syntax error: non-declaration statement outside function body
The text was updated successfully, but these errors were encountered:
A parsing ambiguity arises when a composite literal using the TypeName form of the LiteralType appears as an operand between the keyword and the opening brace of the block of an "if", "for", or "switch" statement, and the composite literal is not enclosed in parentheses, square brackets, or curly braces. In this rare case, the opening brace of the literal is erroneously parsed as the one introducing the block of statements. To resolve the ambiguity, the composite literal must appear within parentheses.
if x == (T{a,b,c}[i]) { … } if (x == T{a,b,c}[i]) { … }
What version of Go are you using (
go version
)?What did you do?
https://go.dev/play/p/eIJEXrkKD8m
I'd like to mention, that compiling with
new(T)
or extra parenthesis aroundT{}.Name()
was successful. Seems to me thatif T{
was parsed as beginning of theif
scope.At a first glance seems like two situations can be distinguished by having/not having a method call after parenthesis is closed
What did you expect to see?
Code compiled successfully
What did you see instead?
The text was updated successfully, but these errors were encountered: