Go Enums Still Suck (www.zarl.dev)
from bugsmith@programming.dev to golang@programming.dev on 20 Mar 2024 12:31
https://programming.dev/post/11706369

#golang

threaded - newest

bugsmith@programming.dev on 20 Mar 2024 12:34 next collapse

A follow up post by the author, original shared and discussed here.

tux0r@feddit.de on 20 Mar 2024 12:37 next collapse

That blog is hard to read on a desktop computer in my opinion. But hey, “it looks cool”, at least…

bugsmith@programming.dev on 20 Mar 2024 12:38 next collapse

I agree. The content is reasonably sound, but from a design and UX perspective, it’s awful.

pkill@programming.dev on 21 Mar 2024 10:25 collapse

Firefox and gnome web reading modes ftw

Solemarc@lemmy.world on 20 Mar 2024 13:01 next collapse

As far as I was aware Go didn’t have enums and this

const()

Pattern is just a weird thing people do because it behaves like an enum?

firelizzard@programming.dev on 20 Mar 2024 16:45 collapse

You are correct, Go doesn’t have enums. The const thing is a widely accepted pattern for approximating enums.

wyrmroot@programming.dev on 20 Mar 2024 13:08 next collapse

I hate seeing data encoded into magic comments, struct tags included. One of my biggest gripes with Go is that I think they should have used a different symbol to distinguish important annotations from true comments.

firelizzard@programming.dev on 20 Mar 2024 16:44 next collapse

Who uses struct tags for comments? I’ve never used or seen them used as anything except annotations as in tag:“value”. And linters (go vet?) will tell you if you’re formatting them wrong.

YIj54yALOJxEsY20eU@lemm.ee on 22 Mar 2024 22:09 collapse

I used the embed feature to embedd some files into the binary recently. It feels so hacked together.

Ephera@lemmy.ml on 21 Mar 2024 06:45 next collapse

So, I don’t code in Go and have no intention to. But my impression was that Go is intentionally simplistic. Now I read about this iota keyword, which seems like such a niche thing to include into the language, like what the heck. Is there any other use for it, aside from creating pseudo-enums?

sxan@midwest.social on 22 Mar 2024 00:22 collapse

Nope. Of all the silly things to include in an intentionally pared-down language, iota is maybe the dumbest thing in the language. I think the purpose was to provide a default value, because one of the things that was talked up when the language was young was how every variable had a default value - there were no undefined values for any types. But honestly, I don’t know; it seems a waste.

And I say this as someone who still hasn’t personally found a better language than Go, except maybe C99. The language has warts, but at least - unlike a commonly compared and currently popular language - it doesn’t look like it fell out of the ugly tree and hit every branch on the way down. And I believe Go’s remaining warts will be resolved, eventually.

Ephera@lemmy.ml on 22 Mar 2024 05:47 collapse

Well, if you’re talking about Rust there, then seeing Go’s pseudo-enums had me even more confused, why anyone’s comparing the two.
Rust not only has enums, they’re used everywhere and when combined with pattern matching, they’re one of the most powerful concepts in the language…

Pixel@lemmy.sdf.org on 26 Mar 2024 15:11 collapse

Don’t understand why people hate them so much. They work fine for me, the go team, and many others. If you want an enum scope you can use the sub package trick. Not ideal but I don’t even need that. Iota is cool because it basically repeats any pattern, including bit flags. My biggest beef with them is the ability to assign any literal value to these custom types, but I can handle it. Plus you can wrap in a struct if you care that much. It’s just not a big deal.