-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
proposal: Go 2: syntax for declaring nested structs #25848
Comments
#21496 seems like a clearer way to address the same use-case. |
@bcmills that's a valid point, thanks for pointing to the other issue. I'm not sure if the elision would always be clearer, but it's certainly more concise, and there's always the possibility of specifying types if any code gets unclear, so I'd be happy with the solution you pointed out ! I also like the idea of making sub-types accessible without breaking the nesting visually though. |
I don't like this, mainly because now |
As @bcmills says, #21496 seems easier to understand, and as @deanveloper says, using the same name as both a type and a value has the potential to be quite confusing. We aren't going to make this change, but thanks for the suggestion. |
One of the frustrating points for newcomers to Go is the syntax for declaring nested structs. Especially considering other languages make it concise and easily memorable.
Right now that syntax for declaring it in one go looks like this:
And I've noticed a few times that intuitively, people tend to keep the struct A declaration nested, and try to guess the syntax for declaring one instance of it.
That syntax is the following, and it's pretty complicated (again I'm comparing to other scripting languages that provide no type safety at all, it's a pretty unfair comparison):
Which leads to my syntax proposal for doing the same thing:
What is your opinion about this syntax ?
I'm not familiar with the go codebase yet, but I'd be happy to start looking into it, I just wish to see how the go community would receive such a change first.
Also, are there strong reasons (that I don't see) to not introduce that change ?
The text was updated successfully, but these errors were encountered: