Just like exactly every other thing google has ever produced (such as dart, flutter) golang sucks.
Reasons:
- datetime formatting - most retarded method I've ever seen
- pointers - mixes two completely separate concepts together namely making a variable nullable and pass-by-ref as optimization these two having nothing to do with each other
- no constructors - no safety. all fields are in practise optional. custom make functions can by bypassed. you'll end up with objects risking having not be fully initialized.
- no optional arguments, no default arguments
- no labeling of function parameters when calling the function - you can use structs but then you've turned every single argument into an optional argument
- no true enums
- go test output sucks (github.com) - just show me what tests failed ffs
- a hello world program in golang compiled into webassembly takes at least 2 megabytes - no I am not joking!
- no throw catch exceptions - returning errors from functions is not a problem or bad, the problem is that it's the only option in golang. error handling takes up a lot of space and makes it less readable
- no ternary operator - nested ternaries suck, true, but what looks best this
s := b ? 'true' : 'false'
or this var s string; if b { s = 'true' } else { s = 'false' }
?
There is a longer list of dumb shit here (it's loong) https://github.com/ksimka/go-is-not-good .
Seems they all missed the datetime formatting madness so I describe it briefly:
Unlike other languages where you can format datetime like this
t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))
you can't. Instead you need to do EXACTLY this
t := time.Now()
fmt.Println(t.Format("20060102150405"))
If you write 20070102150405, 20060102150406 or 20060112150405 it won't work. All magic numbers. Why? Because google are retards that's why.
https://stackoverflow.com/questions/20234104/how-to-format-current-time-using-a-yyyymmddhhmmss-format
For anyone liking golang for it's simplicity of I'll just state that nothing's stopping you from picking a more full-featured nicely designed language and limit yourself by only using a subset of it's features. If you like driving a car very slowly you don't have to drive a Trabant you can drive a faster better car by limiting yourself to just using the 1st gear.
Just like exactly every other thing google has ever produced (such as dart, flutter) golang sucks.
Reasons:
* datetime formatting - most retarded method I've ever seen
* pointers - mixes two completely separate concepts together namely *making a variable nullable* and *pass-by-ref as optimization* these two having nothing to do with each other
* no constructors - no safety. all fields are in practise optional. custom make functions can by bypassed. you'll end up with objects risking having not be fully initialized.
* no optional arguments, no default arguments
* no labeling of function parameters when calling the function - you can use structs but then you've turned every single argument into an optional argument
* no true enums
* [go test output sucks](https://github.com/golang/go/issues/13106#issuecomment-456896310) - just show me what tests failed ffs
* a hello world program in golang compiled into webassembly takes at least 2 megabytes - no I am not joking!
* no throw catch exceptions - returning errors from functions is not a problem or bad, the problem is that it's the only option in golang. error handling takes up a lot of space and makes it less readable
* no ternary operator - nested ternaries suck, true, but what looks best this `s := b ? 'true' : 'false'` or this `var s string; if b { s = 'true' } else { s = 'false' }`?
There is a longer list of dumb shit here (it's loong) https://github.com/ksimka/go-is-not-good .
Seems they all missed the datetime formatting madness so I describe it briefly:
Unlike other languages where you can format datetime like this
```
t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))
```
you can't. Instead you need to do EXACTLY this
```
t := time.Now()
fmt.Println(t.Format("20060102150405"))
```
If you write 20070102150405, 20060102150406 or 20060112150405 it won't work. All magic numbers. Why? Because google are retards that's why.
https://stackoverflow.com/questions/20234104/how-to-format-current-time-using-a-yyyymmddhhmmss-format
For anyone liking golang for it's simplicity of I'll just state that nothing's stopping you from picking a more full-featured nicely designed language and limit yourself by only using a subset of it's features. If you like driving a car very slowly you don't have to drive a Trabant you can drive a faster better car by limiting yourself to just using the 1st gear.