5 ms·
Proposal: Go 2: Lightweight anonymous function syntax
- erik_seaberg 4y agoI’m always surprised to see “beginners will need to learn it” as an argument when so much of what I had to learn once has kept paying off for years. I say give me the biggest toolbox we have.
- metaltyphoon 4y ago“Go 2” is a pipedream. It won’t happen
- alophawen 4y agoGo on
- armchairhacker 4y agoC++ should be renamed to "Go 18465927"
- Matthias247 4y agoAre the recently introduced generics part of Go 2 - or not? I thought at one point in time the team announced that Go 2 would always be a backwards compatible evolution of the language, so it seems new features could happen independent of whether one labels them as Go or Go 2.
- morelisp 4y agoBoth generics and the errors.Is/errors.As interface began life as "Go 2" projects. "Go 2" is a catch-all bucket for anything that might need to be incompatible.
- metaltyphoon 4y agoRight... so there is no Go 2. It's silly for a language that prides so much on semver and how its package versioning uses it, to make "Go 2" backwards compatible.
- morelisp 4y ago"Go 2" is not backwards compatible. Features planned for "Go 2" which are backwards compatible get backported to Go 1. This is aligned with semver.
- genericone 4y agoThe Goto Language.
- devnull3 4y agoNot that I have anything against or for this proposal, I think the focus should be on items which causes daily friction. Example the err check pattern: val, err := f() if err != nil { return err } Now to be fair this was discussed in public sometime back. I don't know what became of it.
- mdaniel 4y agoOr `-Werror` that makes // given func Onoz() error { return errors.New("kaboom") } // when Onoz() // does not compile due to unhandled error Golang has an existing syntax for purposefully eating errors via _ = Onoz() but I've caught innumerable bugs in codebases where the author didn't realize (or care?) that funcs returned error and just swallowed it For a language where an _unused import_ is a compilation error, surely either making error swallowing also a compile error, or (as opt-in behavior) using -Werror as with gcc to say, "no, seriously: no error swallowing permitted" It might require some silliness given the "vendor deps" pattern, but then again, if one of your deps is also careless, maybe that's _exactly_ the circumstances under which you'd want to call timeout
- morelisp 4y agoThe equivalent of '-Werror' in go is using linters, which will detect that.
- mdaniel 4y agoI have seen no such linter[0]; do you have one that you know does that? But, sure, A++ for having to install more stuff when the go compiler considers a different "linter" problem as fatal to the build 0: yes, of course GoLand catches it but prying vim from gophers hands is hard work
- morelisp 4y agohttps://github.com/kisielk/errcheck https://github.com/kisielk/errcheck, which is in most of the combined linter packages by default. We'll agree to disagree about unused imports; imports have can side-effects.
- everforward 4y agoThis doesn't really seem worth it to me. There just aren't enough extraneous characters. We can drop the `func`, but most of the others are near equally long or exclude information like return types. Making return types implicit seems like a much larger language change.
- throwaway81523 4y agoGo 2 is a thing? Is it considered harmful?