Background

Few months earlier, when i started to design on my final year project for bachelor degree, I needed a programming language that can handle concurrency well, and at the same time, with modern syntax. I looked into multiple programming languages, and Go stood out from my opinion list.

Learning process

Pick up Go

When I decided to pick up Go, the first thing I do was looking for example project and read the source code. It turned out that was a bad move. Due to the syntax and the structure of Go. So I took a step back, by going through every slides of A Tour of Go. Surprisingly, I took me one evening to complete it, and I was able to read Go code after that. The part that I took most of the time were topic on concurrency and channel. I used the old-fashion way, visualised by drawing out on paper, it really helped me.

Think like Go

One of the challenges that I faced was the design paradigm. Coming from object-oriented and functional programming background, Go does not make any sense to me at the first though. Imagine without the powerful functions like map , reduce that available to a lot of languages. Basically, in Go we have to write loop ourselves. Imagine handle errors without try and catch . It took me awhile to get used to it.

Read more code

As I have picked up the basics, I continued my learning journey by reading more Go code.

The more I read, the more I realised how much I don't know about Go.

Open source definitely helps. I read a lot of open source code.

Why I never regret

After several months working in Go, it does bring benefits to me

Open up new opportunity

It increase the value of ourselves when we learn or know more things, especially in the technology industry where things are changing so fast. Go might not the most popular language out there, but it is growing.

Think from another perspective

As I mentioned earlier, in Go we do not have the powerful functions in most programming languages, it allows us to think the solution from the most basic programming structure. It might not be comfortable for some people, but it helps me to think the problem from another perspective.

Performance is awesome

Go's performance is awesome. I do not run any benchmarks to do comparison, for me I think is pretty good. The compilation time is really quick, and the CPU utilisation also quite low for my application.

Conclusion

Go is an awesome programming language, and I encourage all of you to give it a try. I will continue my journey in Go with different applications.

original publish at https://blog.yongweilun.me/why-i-learn-go-and-why-i-never-regret-cjwj3185s003rxts1gw16bwvc