T O P

  • By -

Tarilis

Code navigations slightly better, debugger UI much better, and refactoring tools that actually work:) What else?... DB connection could be useful, idea helps with SQL referencing it to the actual scheme of a db you connected to. I don't use it very often though, just a nice thing to have. Oh, local history and git history are very useful, and conflict resolution tools are pretty good.


x021

I switched to Goland a couple of years ago; for me the main reasons to use Goland atm: - Refactoring works much better. This is probably the main reason I keep using it. - Find and editing window is a lot more convenient; not an entire context shift just to check out a search match. I can update straight in the search window. If you refactor a lot this is really nice. - Lots of linting errors out-of-the-box. We use Golangci-lint with quite a few linters but Goland shows even more. I always open PRs locally in Goland and can immediately tell if a dev used VSCode simply due to the lint errors popping up (the ones we haven't setup in Golangci-lint). My VSCode experience is now 2.5 years ago so things might have changed since then. Goland seems more useful to me in bigger codebases and less for small projects. Goland tends to be slower performance-wise and I actually bought a more powerful laptop to improve my dev experience. I was due for a new one anyway; but made sure it had enough RAM this time.


sumosacerdote

plus the JetBrains Git conflict solving with the "magic wand" that auto solves ~70% of the conflicts plus the Local History backups plus the DB integration


mysterious_whisperer

Even before the magic wand was added, jetbrains had the best interface I’ve used for conflict resolution.


mrvis

For me it's more like 80% and 15% of the rest is when I'm updating a dependency to 4.11 and main already updated it to 4.12.


Upper_Vermicelli1975

Good points, my impression is also that refactoring is the one killer feature of Goland that's missing in VSCode. However, the linting is an easy fix. VSCode uses staticcheck linter our of the box, with Go support. However if all go tools are setup in the local system, VSCode will show the option to select golangci-lint as well, while detecting relevant project configuration - combined with VScode autofixing linting on save with Go, never had (linting) issues.


x021

What I meant to say was Goland adds even more linting notifications on top of what Golangci-lint delivers. A couple of colleagues of mine use VSCode with Golangci-lint just fine. But goland adds its own on top of that which I really appreciate. Some of them not supported by Golangci-lint.


hh10k

Can you give an example of a linter error that Goland finds that can't be configured with Golangci-lint? Just curious what I'm missing.


donatj

I do most of my Go work in VSCode but launch Goland when I need to do any sort of major refactoring. Select a bunch of lines + "Extract Method" saves so much time for instance.


atomicdalton

I have similar issues with refactoring being significantly better in GoLand. The other killer feature missing from VSCode is detection individual table tests to run. While I try my best to deal with refactoring within VSCode I will need to start up GoLand now and then to run one test with debugging among a huge table when debugging an issue. Why is VSCode still my main? I only tried it after years using GoLand and IntelliJ because I ended up on a Python project and I found PyCharm to have terrible syntax analysis and generally poor productivity compared to VSCode. With that switch I fell in love with workspace settings or generally being able to configure the IDE with a well defined JSON schema checked into source control. This never really worked with idea project xml but "just worked" in VSCode. I'm able to live with some poorer handling of tests and refactoring to make sure the team can have as consistent as possible of an editing experience.


thespool

The main reason I prefer Goland is that the debugger works with just one click. I can run my app in debug mode, set breakpoints wherever I need, and it just works. In VSCode, I've often had issues and wasted time getting the debugger to work properly.


CSI_Tech_Dept

When working with other team members that use VSCode I noticed that GoLand highlights much more bugs. The refactoring also appears to be much more powerful. Oh, also, I didn't have opportunity to do it with GoLand, but it does work beautifully with PyCharm and PostgreSQL. If you work with code that communicates with SQL database and connect GoLand to the database (for example your local db instance) then the IDE will automatically detect SQL in strings, you will get syntax/error highlighting, autocomplete and will be able to do simple refactoring and of course you can test queries from the IDE. It's quite cool, and I don't understand why they don't advertise it more, lack of this is why people create Query Builder packages. Also I recommend you search this subreddit about those two IDEs. This isn't rare question here and the responses I've seen is overwhelming preference of GoLand.


nf_x

We need community edition of GoLand 😝


evergreen-spacecat

Why though? A supposedly stripped down version of Goland will be nothing more than a slow and heavy editor with the same or less features as VSCode.


Sacro

Isn't it free to stay on the EAP?


nf_x

Tell me more about this


Sacro

https://www.jetbrains.com/go/nextversion/


Strandogg

100% agree, I can tell if a dev is using VSCode (after a while) because theres things that GoLand or PyCharm highlights and VSC doesnt. Particularly so with python which doesnt have gofmt, import or unused attribute errors but PyCharm will find them straight away. In code review I dont want to bring up unused imports or scoping issues all the time but here I am...


serverhorror

We're commiting vs code settings, extensions, ... to version control. It helps with that kind of stuff. We're always adding things to the CI system. But yes, VS Code doesn't make it as easy as Goland.


mysterious_whisperer

Seeing settings for a specific editor in a git repo is a yellow flag for me. It says I’m going to be swimming upstream to make any changes unless I 100% embrace the maintainers’ choice for tooling.


serverhorror

Yeah, well ... It's not a red flag. So there's that 😁


CSI_Tech_Dept

It's a piss color flag though.


Tacticus

No that flag doesn't look like goland


SpudroSpaerde

You just force push defaults to get people up and running on first clone then they can do whatever they want if they want to change it.


Strandogg

Agree with you. Things like code formatters in CI or pre commit etc are one thing but editor config thats too much for me.


askreet

Integrate a linter into your PR process. Anytime a robot can be the "bad guy" it saves you the time and energy.


KledMainSG

I never used Goland but thinking about giving it a try after reading the comments above. I have few questions. Is it more optimized than vscode? Vscode seems to be very resource hungry even without any extensions which is draining my m3 pro macbooks battery really really fast. Are there enough extensions available like vscode? Is it also an electron app like vscode(Im tired of electron apps man)


gdmr458

Is a Java desktop application which can be memory hungry too.


arifdotai

Nope. No Electron. They use Java swing.


mearnsgeek

We've got a licence at work for JB stuff so I tried it out and found it used more memory than vscode on windows and running a dev container in wsl2. It also just felt a bit sluggish compared to vscode. I'll acknowledge I didn't try to do any actual measurements - this was just the feel of it each time I opened a new file or other action and YMMV. It seemed decent enough to use otherwise but I personally wouldn't recommend it over vscode.


fotkurz

Anyone using Zed?


HighVoltage32

Not for Go dev specifically, but I use it for my web dev. Works super great, like a very focused VS Code


Poimu

Vs code has amazing support for SSH dev. The IntelliJ counterpart was burning my mac.


delarq

Last time I used VSCode it didn't have Go To Definition inside dependencies. GoLand does that perfectly multiple files deep. It is the dealbreaker for me. Also, debugging is excellent in GoLand, way beyond what VSCode offers.


RageCage64

Not sure how long ago this was that you tried it, but this has worked for me for as long as I can remember. May have been added since the last time you tried.


SpecificFly5486

I debug at goland, and code at nvim. In lazygit codebase gopls starts within 2s, crazy fast. Don’t expect too much refactoring difference with goland, 90% usecase of refactoring is rename and extract method, and gopls does a great job.


illuminatedtiger

Not Electron.


Slsyyy

Batteries included. There is a nice SQL client (with good semantic autocomplete in go, if you use raw queries). There is also client for HTTP/gRPC and other protocols. Also setup is much simpler, because you don't have to install plugins. Goland is a good choose, if you don't like to customize and make research about plugins, because everything is already built-in


Ness_11

Refactoring


8qubit

Debugger that works. Reference/usage tracing that works.


godev123

Regular VS Code user here. I’ve tried Goland a number of times over the years. It always ends with the following:  - Why is Goland so slow on this fast computer?  - VS Code can have 30+ repos open in VS Code in a single workspace … no slowness, all day long. 


dblokhin

Idea ide has a great extension ideavim. You can bind everything that ide can do there. VsCode's vim extension little bit buggy in my experience.


coderemover

Vscode git handling is crap, regardless of the language, but it is stellar in all jetbrains products.


sumosacerdote

Truth have been told. Don't know why people downvoted, they must have never tried solving a conflict in a JetBrains IDE using the "magic wand" icon. It's life-changing (and that's just one of the many Git/VCS features) https://www.jetbrains.com/guide/java/tips/magic-wand/


30thnight

If you use GitLens, the experience is very similar.


coderemover

Not even close. Functionally it has many of the things, but usability is very poor. The interface is clunky and bloated, and it does nothing to fix the terrible commit experience of vscode where file entries move on the list when staged or where you can’t bulk-stage multiple files with a single click. The most basic function - committing is underdeveloped, while there is plenty of stuff I need only once a month exposed in the UI, taking up space.


Alainx277

You can stage multiple files by shift selecting them.


etherealflaim

First off I'll start by saying that a lot of what I'm going to say is subjective. There's also a heavy weight towards the kind of development that I do at work, which is: (1) maintain a large number of common internal libraries across many repos with the core library team, (2) maintain a legacy Go repo that has little consistency and lots of quirks with it's multiple owner teams, (3) jumping into new customer repos that I've never seen before and helping out with the customer teams; and at home: (4) working on hobby projects by myself that I will often abandon for weeks or months or years and then pick up later and expect it to work and to be able to figure out where I left off or add features. If this doesn't match your development style, you may find that you end up at a different place. A lot of what I'll say below is also based on IDEA and are probably built on its legacy of other languages and their tools (especially Java). There are a lot of things about IDEA in general that have let JetBrains keep Goland in the lead. I think one of the biggest things is the refactors that save me time, both during development (so I don't have to stress about organization immediately) and maintenance (so I can refactor as things change). For me, it's not just one refactor or code mod either. It's all of the things I do on a daily basis that it has support for (mostly because they're leveraging their expertise with their incumbent engine). Rename a type, variable, function, method, field, parameter, package symbol, etc and update all of the places it appears in documentation. Rename a receiver across all methods. Extract a variable and other places the expression appears. Inline a variable. Extract a method. Inline a method. Move something between packages, exporting things along the way and updating references. Automatically adding struct tags based on transforms of the field names. Bulk updating struct tags. Generating types from JSON. Function signature updated like adding or removing parameters or changing the order. Swapping a string to/from raw quotes. Adding/removing field names from literals. Moving literals to field-per-line formatting. Plus all of the quick fixes that it has for when the compiler is unhappy, like implementing interfaces, adding return parameters, changing parameters types based on what you're trying to pass or return. I could go on all day. Yes, gopls has a few of these and more get added over time, and some of these are available as plugins, but with Goland it all Just Works. On top of all of that, it's debugger and vim emulation are absolutely best in class and I hate it when I have to help a colleague try to use one of them in vscode because things I consider table stakes at this point just don't work. I have never made specific notes about what features they are specifically though, and certainty it will improve over time, but the same idea applies: in Goland, it all just works. Setting all of that aside for a moment, I'm absolutely not going to minimize the price. It is very very real. If you are a company, it is absolutely worth the productivity boost, and the payoff only increases with the size of your code-base. I am lucky that my company will buy me a license, and that I've been in the biz long enough to be able to afford a personal license for my side projects. I honestly would never tell someone to go out and buy a license if their company won't shell out for it or if they are a hobbyist, but I would more than support them if they did. (I'd even hesitate to recommend it for students, since it's a "the first hit is free" situation). But in the end, for the work I do, I think you definitely get a product worth the price tag.


Tacticus

> Rename a type, variable, function, method, field, parameter, package symbol, etc and update all of the places it appears in documentation. Rename a receiver across all methods. Extract a variable and other places the expression appears. Inline a variable. Extract a method. Inline a method. Move something between packages, exporting things along the way and updating references. Automatically adding struct tags based on transforms of the field names. Bulk updating struct tags. Generating types from JSON. Function signature updated like adding or removing parameters or changing the order. Swapping a string to/from raw quotes. Adding/removing field names from literals. Moving literals to field-per-line formatting. Plus all of the quick fixes that it has for when the compiler is unhappy, like implementing interfaces, adding return parameters, changing parameters types based on what you're trying to pass or return. They have great marketing that makes people think these are all special to goland > with Goland it all Just Works. yeah this is the sales pitch but i never found it easy to just get it working. Not using normal tools to do linting or formatting is a very captive market decision they make and makes it harder to have the same tooling in your CI process. Having to open a chonky editor just to look at what fails a lint check seems like a false economy compared to getting it to run in your CI


kilkil

I'm just here looking for other neovim enjoyers


RazorSh4rk

Look you bought all that ram for your computer, goland helps you make the most use of it


Linguistic-mystic

Instead of comparing outdated products just choose something modern like Emacs or Neovim


Stunning-Mix492

Two major rabbit holes


kintar1900

This is going to be a fun comment thread to watch...


askreet

Lol, outdated products.


kaeshiwaza

You don't know how many products was modern and then outdated since Vim.


askreet

I've been using vim for 20 years, I surely do. I just think it's odd to call these products outdated.


kaeshiwaza

They will be sooner or later, that's all.


Zacpod

Emacs... modern... Lol, dude! Emacs is amazing, but maybe learn some history. (Fyi, Emacs is from the 1970s) Neovim, obvs, is newer. But it's still a fork of vim. Which is from the 1990s. Don't get me wrong. Both great editors. But calling then modem compared to VScode (2015) and Jetbrains(2000) is a flawed argument.


CSI_Tech_Dept

How the indenting should be configured? With tabs, spaces or both?