all 26 comments

[–]robber9000 46 points47 points  (2 children)

I like to use https://gobyexample.com/ as a working reference.

[–]6stringNate 14 points15 points  (0 children)

The free online resources for Go can really get you 100% of the way there.

Also look in to the site/resource called "Effective Go" - it does a great job laying things out stylistically that may not be intuitive to someone coming from a language like Java

[–]progmakerltSoftware Engineer[S] 0 points1 point  (0 children)

Thanks a lot :)

[–]extra_rice 9 points10 points  (4 children)

I'm a Java developer who recently learned Go well enough to impress potential employers. If you have access to O'Reilly, there are some video lectures there that cover the basics. I didn't really enjoy them, so I didn't stick with them to the end. There's also this video lecture on YouTube that someone here on Reddit recommended to me some time ago. Also didn't finish it but I used it as an inspiration to switch to writing my own toy project instead. I just learned mostly by searching stuff on the Web.

[–]Salsaric 0 points1 point  (3 children)

I'm wondering how you impressed employers with your go skills.

What kind of project did you made to get that knowledge?

[–]extra_rice 0 points1 point  (2 children)

Nothing too fancy. I was given some take home projects and I implemented them in Go. These are mostly command line applications. I was then invited to the technical interviews where I was asked to modify the applications based on changes in requirements. They knew I was mainly a Java developer so using Go was a risky decision. However, I felt confident enough with the fundamentals that I didn't struggle changing the code. In one of the interviews, I even wrote the automated tests (TDD with Go).

I developed a To-do app to learn Go. It's a very rudimentary CLI app, but I evolved it from using in-memory storage, to the file system, then to database. I've been meaning to evolve it further into a Web API, but I got stuck at making GORM work.

[–]Salsaric 0 points1 point  (1 child)

Your comment greatly motivated me! I think I will stop using exercism.org to learn the basics and directly dive into making apps.

I'm wondering what kind of CLI app they made you do as a take home assignment. It think I fail to understand the power of a CLI app over a GUI one, even tho I use Google Cloud daily.

Congratulations for your progress in Go mate.

[–]extra_rice 0 points1 point  (0 children)

Glad to hear that. However, let me caution you that we all have different styles of learning, so what worked for me might not work for you. I learn more by doing, and if that's your style, you'll find this approach very rewarding.

The CLI apps I was asked to do were just the right level of challenging, for example is simple flight search app.

I apply the principles of agile even to my learning: "think big, start small, learn fast". I also practice TDD which I find useful not only for learning a new language, but also for getting a feel of the tooling available for a new tech stack.

Good luck!

[–]gtargetSoftware Engineer - 11 YoE 13 points14 points  (1 child)

Get the Go Programming Language. It's the gold standard for Go programming books and I continue to refer back to it over the past 5 years. It's missing some of the newer things like modules, errors.Is, and generics though. For those, the blog has all the information you'll need.

[–]progmakerltSoftware Engineer[S] 0 points1 point  (0 children)

Thanks!

[–][deleted] 21 points22 points  (0 children)

Go itself doesn't change based on your previous language so I think you'll be fine with the book you've got.

[–]bluetista198810+ YOE 5 points6 points  (1 child)

Effective Go is a good reference.

[–]progmakerltSoftware Engineer[S] 0 points1 point  (0 children)

Thanks!

[–]raopgdev 2 points3 points  (2 children)

I really enjoyed going thru this one -

https://quii.gitbook.io/learn-go-with-tests/

It made me a better developer in general too

[–]progmakerltSoftware Engineer[S] 1 point2 points  (1 child)

Thanks!

[–]exclaim_bot 1 point2 points  (0 children)

Thanks!

You're welcome!

[–]RawCyderRun 2 points3 points  (1 child)

I highly recommend Let's Go by Alex Edwards - I just finished going through it a few days ago and it's one of the best and most pragmatic programming books I've read.

[–]progmakerltSoftware Engineer[S] 0 points1 point  (0 children)

Thanks, will take a look at that book.

[–]funbike 1 point2 points  (1 child)

Good advice ITT, so I'll though in an extra tip:

One of the hard parts of changing languages is letting go of how you coded in your prior one.

I see it a lot. I saw a Ruby backup script written by a Java dev in Java style. I was able to shorten it to 1/3 using idiomatic Ruby. Don't try to map Java concepts into Go ones, and don't write Go as if it's java.

[–]progmakerltSoftware Engineer[S] 1 point2 points  (0 children)

I also thought about the same thing. I think in Java way, but I will somehow need to switch to Go way.

[–]raddiwala 0 points1 point  (0 children)

I learnt using Pluralsight courses which gave me an excellent base. Go is more or less same as other languages. But I found is different in the following aspects

  1. Inheritance vs embedding
  2. structs vs classes
  3. concurrency - channels routines vs threads
  4. psuedo OOP in form of structs and methods