I am considering learning Go. As far as I know about it, it's a systems language geared toward parallel programming. (correct me if I'm wrong)

  • Should I have a very good understanding of C in order to be good Go programmer?
  • How much systems concepts (*nix OS concepts) I need to master before delving into Go
  • What other things I should know/learn before starting Go
  • 4
    It's much more likely that you acquire a good understanding of a concept by doing practical work related to it in a real programming language than that learning it in the abstract gives you a head start for a programming language. Humans are embodied creatures - start programming now! – Kilian Foth May 20 '13 at 6:24
  • It's often more important to know what you don't know as what you actually know. I'd add to Mat's answer that your questions indicate that you know (or know that you don't know) plenty to get started. As Kilian said there's nothing better than actually doing the work to learn how to do the work. – Ask Bjørn Hansen May 20 '13 at 6:38
  • Sharing your research helps everyone. Tell us what you've tried and why it didn’t meet your needs. This demonstrates that you’ve taken the time to try to help yourself, it saves us from reiterating obvious answers, and most of all it helps you get a more specific and relevant answer. Also see How to Ask – gnat May 20 '13 at 6:40
  • Go is designed to be easy to lean, so you don't need any special preparations - just go ahead and learn it. Should be easy. – Idan Arye May 20 '15 at 13:04
  • Seriously, just go to tour.golang.org/welcome/1 and do the tutorial. It takes about one afternoon. In the end you'll learn go. You won't be a master yet but you'll get a feel of the language. – slebetman May 20 '15 at 14:08

Go isn't specifically a "systems programming language", it's a general purpose programming language.

You don't need any prior knowledge of C to get started, it's not very close to C at all (even syntactically).

You don't need specific systems concepts (Unix or otherwise) either. A fair understanding of how to get things done on the command line and how to use a text editor are pretty much all you need - and since you can do the Tour of Go entirely from your favorite browser, even that's not required.

Go would be fine as a first programming language (except maybe that Go being a relatively young language, you might find a bit less documentation and tutorials around than for others, and the tools/ecosystem might have a few more rough edges).

All you need is time to go through tutorials and introductory material on golang.org and elsewhere, patience, and curiosity.


Go can be a lot easier to learn when compared to C. The only thing that may throw you off is pointers. I wrote a blog post that aims to be an introduction to pointers and in depth explanation of what they do.

A few pointer pointers.

  • I used to be a very good C programmer some years ago. But after I started full time python programming -- I never went back to C. So pointers is no problem for me. – treecoder Aug 12 '13 at 6:11
  • 4
    Most of the developers I know who end up absolutely adoring Go actually come from a python/ruby background. Which is kind of ironic considering one of the core motivations to develop Go was to replace C++, and most C++ developers I know dislike Go. talks.golang.org/2012/zen.slide#1 – mortdeus Aug 19 '13 at 5:00
  • Rob Pike has written a very good blog post that tries to explain why C++ developers do not like Go - Less is exponentially more. – jhominal May 20 '15 at 12:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.