4 ms·
> What is missing from the Go ecosystem? Personally, golang "IDE" experience is not as good as Java or even C++. For example, ycmd only supports subset of fun
by kozikow 10y ago
> What is missing from the Go ecosystem?
Personally, golang "IDE" experience is not as good as Java or even C++.
For example, ycmd only supports subset of functions for golang. I miss ycmd-goto-references the most.
- tqkxzugoaupvwqr 10y agoJetBrains WebStorm with the free Go plug-in provides an excellent Go IDE experience. There are some free community editions of JetBrains IDEs that are supposed to work with the Go plug-in (e.g. PyCharm, if I’m not wrong), so you do not even have to pay anything. https://www.jetbrains.com/products.html?fromMenu#type=ide https://www.jetbrains.com/products.html?fromMenu#type=ide
- powerslave85 10y agoIt is not excellent. All other editors I used autoformat Go code after save. There are two types of format provided by IDEA - IDE Format & go fmt. Both not ideal. IDE Format does not format code according go guidelines. It can delete unused imports if you go through options. go fmt does not delete unused imports, and as result code is not compileble. Refactorings are missing in IDEA. It is not excellent, it is something you can work with.
- jen20 10y agoYou can also use `goimports` with IDEA.
- tqkxzugoaupvwqr 10y agoYou can create a macro to gofmt when you save. If you desire removing unused imports, you can add “Optimize Imports” to the macro.
- vetinari 10y agoThat looks like limitation of ycmd, not golang. Most go modes for various editors use native go utilities as their backend, for example gocode/godef/golint/gorename/guru, etc.
- the_duke 10y agoMy main iusses: -) A proper package manager. (no, go get is not enough. They have realized this and have a team coming up with a draft for an official one) -) Well written, well maintained libraries that do proper releases. There are very few of those out there. Might get better with an offical package manager and ideally package repository a la npm/crates.io -) Generics. This will help the previous point also. Often it's hard to write proper reusable libraries due to the lack of generics. And no, they didn't keep generics out because they are to complicated for the language users. They just (quote) "didn't find a good way to implement them", and big language changes like that are out of scope before 2.0. -) Macros probably won't ever come, but if not, please at least give us a language construct that reduces error handling boilerplate. (Rust has some nice macros for that).
- wyattjoh 10y ago> Generics I was concerned by this at first as well, but after using Go full time for the past two years, I've never found a need/use for them. Go doesn't lean towards strict OO principles, where I feel that most of the Generics uses are applied (Arrays, sorting, etc.). Not everyone's opinion, just my two cents.
- the_duke 10y agoYou only have "generic" functionality for built in types though. Arrays. (In a certain way maps and channels). That's fine if you only use those, but it makes it impossible to write generic functions for much else. See my comment about lack of libraries. I did miss them a lot. Not when writing your one off app or program, but for libraries. And you end up having to implement a lot yourself that's for free in other languages.
- zzzcpan 10y agoPromises and some other higher-order programming without generics are not really usable in Go.
- omginternets 10y ago
- leetrout 10y agoPlease do try atom with the go-plus package. It has goto def, can show "doc strings", and has decent integration with delve.
- akhilcacharya 10y agoFor me, using LiteIDE and Atom + go-plus was what got me comfortable with Go. Without it, I felt it was far too finicky and had lots of hidden gotchas (like no unused variables).
- kozikow 10y agoI have the same features form ycmd. ycmd actually works with atom as well and also supports go. Pushing all "IDE" features into editor-agnostic daemon is a good path for the future. ycmd is taking this spot.
- ruffrey 10y agoAtom has surprisingly consistent and useful support for go - fmt on save, debugging, automatically manages imports in a file, and the autocomplete works very well.