Remix.run Logo
akira2501 a day ago

> I've mentioned "leaving struct fields uninitialized". This happens easily when you make a code change from something like this:

Really? Are you not using gopls? It absolutely will warn you about this. And the mutex case. And a lot of the other similar criticisms.

> Go not letting you do operator overloading, harkening back to the Java days where a == b isn't the same as a.equals(b)

In languages that have it I've never used operator overloading to produce anything good or that was obviously better than just using methods.

> The Go toolchain does not use the assembly language everyone else knows about.

Honestly I've never noticed or had to care. And you can build plenty of things that don't require CGO.

The whole "gnostic" tone in language articles on HN is becoming overbearing. There are parts of the language to criticize but couching it in this "lies _we_ tell ourselves" and somewhat kitchy writing that presents minor matters of taste as fully existential issues makes this an unsatisfying read.

rvense a day ago | parent [-]

> In languages that have it I've never used operator overloading to produce anything good or that was obviously better than just using methods.

I used a Scala library for S3 once that overloaded + to mean upload.

    var bucket; var file;
    bucket + file;
Which is obviously bad and unnecessary.

It's really a feature that should be used very rarely by those who make basic libraries, but there it can make a lot of sense - data structures, numeric types, etc.

monksy a day ago | parent [-]

That says more about the library design more than it does about the library.

There are much better examples of the operator overloading for example cons:

item :: item2

Later you can break that down in pattern matching.