Based on you're question I will assume you're not even a beginner. First you need to become a good beginner before you can become an expert. I recently started learning Go. I am FAR from even a good beginner, but I got the following.
​
Videos:
​
Learn How To Code: Google's Go (golang) Programming Language is amazing. If you want just one of these, that would be the single best one.
​
Books:
I honestly don't think the books are necessary even though I purchased them myself. I haven't got through, The Go Programming Language yet so I am speaking more towards, Introducing Go: Build Reliable, Scalable Programs. I would skip this and just work your way through the videos I listed above.
​
Time:
In the first video above the professor hits on a saying, "Drop by drop, the bucket is filled." Or something to that affect. This is important. You need to make time. If you're not going to commit time you will never be an expert in anything. Time is most critical.
Use time to write code for the things that are important to you. I cannot, and will never be able to learn a programming language using the examples they give in books. The "math" examples they use confuse the hell out me. When I learned Python initially I learned it by using it for "real" things so I could better understand it.
If you like stocks, learn Go by coding against stock APIs. If you like web servers, start writing web stuff. If you do something at work over-and-over, see if there is a way to automate it, and learn go that way. You will end up re-writing your code over-and-over as you get better at it.
​
Good luck.
​