• Get application security done the right way! Detect, Protect, Monitor, Accelerate, and more…
  • In this article, I will be listing down some of the best resources available on the internet for learning and mastering Golang.

    Since every user has a preference for different modes of learning, thus I will be covering text-based articles, tutorials, videos, and popular courses around Golang.

    Golang is growing quite quickly in terms of popularity, and you will fall in love with Go once you start exploring it.

    Developer’s Guide

    With around 50K students, this is one of the best complete pack to learning Go from the basics. This course if highly tested and works well for most of the students; once you purchase, you have lifetime access for this. In case you like learning from complete video courses, then this is exactly what you need!

    This course is ideal for beginners and for folks who want to revisit the introductory concepts. The course has 9 hours of on-demand video with additional code resources and assignments.

    Some of the topics covered in this course are –

    • Setup, installation, and basics of the language.
    • Packages and File structures
    • Variables, Functions, Arrays, and Slices
    • In-depth coverage of maps, structs, and interfaces
    • Channel and go-routines (Concurrent programming)

    Bootcamp

    With 300+ lectures the complete Bootcamp course on Udemy is definitely a good buy and right place to learn Golang. You learn by building applications like –

    • Log parser
    • File scanner
    • Spam masker

    Along with this, the course offers over 1000+ hands-on exercises.

    Apart from covering the basic concepts of Go like structs, interfaces, and channels, this course has an interesting project where you learn how to animate a bouncing ball.

    You will also receive a certificate of completion at the end of the course.

    Tour of Go

    Well, I am a big fan of official Golang documentation, blogs, and tutorials. This interactive course is free and doesn’t require any local setup. Just open the website and start learning from basics with hands-on code for each topic.

    This is a course you should start with if you are just looking to explore and want to learn basics without any setup.

    Tour of Go

    Go by example

    This is not exactly a full course, rather a go-to place when you forget the basics. The site covers all the concepts with an introductory text and a full running example. The site is as simple as it could be, thereby focussing on learning. Some of the basic intro posts are about –

    • Variables and Constants
    • For
    • If/Else and Switch
    • Arrays and Slices
    • Maps
    • Range
    • Functions

    and almost all the topics you need! Do check it out and bookmark it for reference.

    Learn X in Y minutes

    Well, if you want a quick tour of basics, learn X in Y minutes is an awesome resource not only for Go but for almost every programming language. It is community-driven and covers a lot of topics on a single page. Do contribute back once you get good at Go.

    Here is a code snippet from the tutorial, which explains concurrent programming in one function.

    // We'll use inc to increment some numbers concurrently.
    func learnConcurrency() {
        // Same make function used earlier to make a slice. Make allocates and
        // initializes slices, maps, and channels.
        c := make(chan int)
        // Start three concurrent goroutines. Numbers will be incremented
        // concurrently, perhaps in parallel if the machine is capable and
        // properly configured. All three send to the same channel.
        go inc(0, c) // go is a statement that starts a new goroutine.
        go inc(10, c)
        go inc(-805, c)
        // Read three results from the channel and print them out.
        // There is no telling in what order the results will arrive!
        fmt.Println(<-c, <-c, <-c) // channel on right, <- is "receive" operator.
    
        cs := make(chan string)       // Another channel, this one handles strings.
        ccs := make(chan chan string) // A channel of string channels.
        go func() { c <- 84 }()       // Start a new goroutine just to send a value.
        go func() { cs <- "wordy" }() // Again, for cs this time.
        // Select has syntax like a switch statement but each case involves
        // a channel operation. It selects a case at random out of the cases
        // that are ready to communicate.
        select {
        case i := <-c: // The value received can be assigned to a variable,
            fmt.Printf("it's a %T", i)
        case <-cs: // or the value received can be discarded.
            fmt.Println("it's a string")
        case <-ccs: // Empty channel, not ready for communication.
            fmt.Println("didn't happen.")
        }
        // At this point a value was taken from either c or cs. One of the two
        // goroutines started above has completed, the other will remain blocked.
    
        learnWebProgramming() // Go does it. You want to do it too.
    }

    So concise and on-point, do give this a shot if you want a quick overview of any specific topics for Golang.

    Gotime

    If you are a fan of audio learning, Gotime is a good podcast. A lot of awesome developers come and share their real-world knowledge and how they use Go in their companies. You should also check GopherCon (golang conference) in which prominent people share their learnings with the community.

    These communities discuss the latest trends and improvements around Go.

    I’ll add some of the popular podcasts here –

    Books

    There are a lot of very good books. I’ll add some of the favorites here –

    Blogs

    There are some pretty good blogs around Golang. There are a lot of articles on medium as well, which you can explore. I’ll share a few here which you’ll find useful –

    YouTube

    Fancy video-based learning?

    Sure, check out this Golang tutorial for beginners by freeCodeCamp.

    Conclusion

    I would recommend completing one of the courses above if you are a beginner and join the Golang community. Also, do share your learnings with the world and contribute to making Go even better. I hope you learned something useful and all the best for your journey with Go.