I basically gave up on Emacs and switched to a combination of VS Code and old-school vi for Go and everything else, respectively. Finding an effing theme that allowed me to program in Go in a terminal without making LSP’s overlays unreadable was nearly impossible. I spent days trying to make this work. I’ve used Emacs since 1991.
This is possible, but it's a bit of a pain. One problem is that the popular themes cater to GUI Emacs users where you have 24-bit color depth. On the terminal this gets approximated to one of the available 256 colors, and this approximation is often not great. This makes themes on the terminal look weird sometimes.
With some work, you can enable 24-bit color support in TTY emacs, which solves this problem. Combine this with some work to either tweak or remove the more obnoxious LSP overlays and you can have a fairly good LSP experience on the TTY.
I wanted a monochrome terminal but was willing to tolerate traditional ANSI color. Once you start with 24 bit color you may as well start using a VNC client.
What sapped my will to live was the impossibility of doing a C-u C-x = on the overlays to determine how their contents were styled, forcing me to go into the source code of a ton of different packages to go fishing for face names to coerce to visible values.
Yes it’s possible but it’s insane. Emacs carries around all of this terminal baggage but many module developers seem to have forgotten about terminal users. Additionally, theming is conceptually broken in that it creates an MxN problem with themes and modes’ face names. This could be solved if modes stopped with the proliferation of mode-specific face names but good luck with that.