DEV Community

Mairelin Roque Riely
Mairelin Roque Riely

Posted on

What do you need to learn Golang

I’ve been for years a Java developer, but for the last 2 years I have developed a huge interest in Golang programing language, and most of the time people when is listening to me talking about that ask me, What do I need to learn Go?

To be honest, what I always think is that for learning anything in life, you only have to really want to do it, and apply any necessary effort to make it real. BTW there are useful ways to have a guide on how to start to learn based on your experienced. And I particularly split that in different bases:

Experience only based on OOP:
Golang is a multiparadigm language, you are free to build a totally functional architecture but you also have the option for using OOP practice and patterns because part of the definition of the language is based on concepts from OOP. For this reason, you need to spend time understanding functional programming to know what are you doing with Go and why.

Experience base on procedural programming:
If you come from a language like C, you can start taking the base Golang tutorial and start over it, because Go is like a C with steroids. And in the cases based on architecture patterns, you need to look for going good practice and patterns.

Experience based on scripting:
If you come from scripting, because you are a sysadmin or someone that only knows about the shell, you can read books and posts about fundamental of programming in parallel with the Golang learning.

No experience of programming before:
For every one that is initiating, I recommend to learn about fundamentals of programming first and then can go throw a Golang tutorial.

Materials that could be useful:

https://tour.golang.org/
https://golang.org/doc/effective_go.html
https://www.godesignpatterns.com/
https://talks.golang.org/2015/go-for-java-programmers.slide#1
https://github.com/tmrts/go-patterns
https://github.com/dariubs/GoBooks
https://medium.freecodecamp.org/here-are-some-amazing-advantages-of-go-that-you-dont-hear-much-about-1af99de3b23a

If you see I haven’t mentioned at all specific technologies, and this is because now days is not anymore about the language is more about why I would use this technology and how I will use it.
I also recommend looking for and groups on slack, telegram, facebook, and twitter.

Top comments (6)

Collapse
 
bbarbour profile image
Brian Barbour

What are the main uses or types of applications people write with it?

For example Javascript is mostly web based client side and server side apps. Python is notorious for being multi-purpose/data-science/server code. C# is aligned with Windows, Unity, and .NET. So on and so forth...

Just curious :)

Collapse
 
mairelin profile image
Mairelin Roque Riely

Hello, Go is for the backend, and is very useful for applications that manage a huge amount of request and transactions because of the ability of managing the concurrency as default feature of the language.

Collapse
 
bbarbour profile image
Brian Barbour

Nice! Maybe I'll try it out. I imagine they have a library like Express in Node?

Collapse
 
davidwhit profile image
DavidWhit

I started learning Go and still like it. Though I've been swoon to the likes of kotlin. It has native bindings if you want. Swap go functions for coroutines. Channels are in experimental. You also have closures and immutables. So if you're heavy Java why Go vs Kotlin?

My biggest gripe and complement are the same it was designed with ease in mind but that leads to a lot of imparative code and a lot of boiler plate and 2.0 generics and different error handling a lot want and others dont. I do like Go but I've seen kotlin and Id rather do that to each there own.

Collapse
 
mairelin profile image
Mairelin Roque Riely • Edited

Hi David, I appreciate your comment, I haven't use Kotlin at all by the time. I saw Go at first and feel very comfortable with what they bring and experiment how I can get good results, if the code is well done. I would have to test a Kotlin to be able to compare it with Go(And now I will add it to my research list). But anyway, I think, is not about the language anymore, is more about how and why we choose it. Maybe Kotlin could be better for some specific things based on the languages features, but this desition has to be made thinking in the purpose of the software.

Collapse
 
ondrejs profile image
Ondrej

Nice thing about Go is that it is really simple and it does not force principles of OOP by default. If you have learned C, Go (or Rust if you want something more difficult to comprehend) should be your next step.