From time to time, I am asked some questions about the Go language learning route and learning resources. This article will explain them in detail. I hope to give some help to those who are learning or want to learn the Go language.

It should be noted that it is not a problem to have a complete grasp of GO development knowledge and find a job in GO development by following my recommendations. Of course, it depends on the individual to what extent they can achieve.

To explain, all the books mentioned in the paper, can be in the public number [Roseduan writing place] back to the corresponding keyword access: [algorithm, operating system, network, database, GO, micro services], on demand.

1. The basics

No matter what programming language you learn, these basic knowledge is universal, and they are very important, so I think or come out to say, but now the online knowledge of this aspect has been a lot of, Zhihu, the public number search, you can find a lot of relevant content, so I will simply say here.

1.1 Data structure and algorithm

Recommend introductory books “big talk data structure”, “Aha! Algorithm”, “comic algorithm · small gray algorithm journey”, “algorithm diagram”, advanced words can see the “algorithm introduction”, “algorithm”.

If books are boring, there are also paid columns online that you can subscribe to. Note that if not the direction of the algorithm, to master the most basic common content can be, there is no need to knock too many advanced data structures and algorithms.

If you want to consolidate your knowledge of the algorithm, you can go to Leetcode and brush a few problems. Of course, this part of the content has another function, that is to deal with the interview, everyone knows. I have a project on my GitHub that can help me learn and consolidate algorithms. Address:

https://github.com/roseduan/algo-learn

The project uses Go, Java and Python to implement common data structures and algorithms, as well as related LeetCode problems.

1.2 Operating system

You may not need much operating system knowledge in your first few years on the job, but trust me, it’s a career hurdle and you’ll come across it sooner or later.

Recommending learning resources: books “operating system concept”, “in-depth understanding of computer systems”, “modern operating systems”.



Books can not read down, very understand you (because I can not read down), here recommend a Xuetang online operating system course:

https://www.xuetangx.com/course/THU08091000267/1516699

It is the open course of tsinghua university, the concept is more basic and easy to understand, if you want to advance deeply, the other people also have a complete set of operating system experiment can be followed.

1.3 Computer Network

Basic books: Illustrated HTTP, Illustrated TCP_IP, How the Network Connects.

Advanced books: “Computer Networks, Top Down Approach”, “TCP_IP Detailed”.

Similarly, if you know you can’t read books, there are some open online courses from famous universities in China on MOOC, which are relatively basic. You can look for them, and there are a lot of good quality courses.

1.4 database

The importance of the database is needless to say, the necessary knowledge.

Basic SQL should not be difficult to master, their own more practice on the line, recommended books “SQL will know will”, “MySQL will know”.

For advanced MySQL, such as B+ tree storage model, transactions, indexes, locks, etc., recommended books “High Performance MySQL”, “Inside MySQL Technology: InnoDB Storage Engine”.

2. Go language foundation

Finally, we come to the topic of the GO language. If you have no basic knowledge of the GO language, or just started, you can follow my path to learn to consolidate.

Recommend introductory books “GO language learning notes”, “GO language interesting learning guide”, “HEAD FIRST GO”, follow the books more knock code, entry is not too big a problem.



I also have some personal materials for learning the Go language online:

  • Go By Example: https://gobyexample-cn.github… The Go language.
  • Go for an interview: http://www.topgoer.cn/docs/go… Go is also good for preparing for an interview.
  • No smell bosses for online tutorial: https://github.com/unknwon/th…
  • Follow the unit test study Go:https://github.com/quii/learn…

Once you’ve learned the basics, you know you might want to try your hand at it. Here are a few beginner’s projects. Feel free to pick one or two that interest you.

  • starcharts:https://github.com/caarlos0/starcharts, the function of the project is to generate making the star trend diagram of the project, the core code, used to try their very well.
  • gorched:https://github.com/zladovan/gorched, use Go to write a small game.
  • pacgo:https://github.com/danicat/pacgo, also use the Go to write a small game, there is a detailed description of each step and code implementation.
  • wechat-go:https://github.com/songtianyi/wechat-go, WeChat Go to realize the web version of the API, simulated WeChat web version of the login/contacts/messaging, and other functions.

3. Go language advancement

After you have mastered the basic GO grammar, you may need to have a deeper understanding of the GO language. For beginners, you can choose the parts that you are interested in. It is impossible to understand them all at once.

Note that this piece of content is self-contained and can be viewed at any time. It will not hinder your learning of the rest of the content.

Here recommended books “GO programming language” (known as the GO Bible), “GO expert programming”, “GO language advanced programming”.



Online learning materials:

  • The design and implementation of the Go language: https://draveness.me/golang.
  • “Go high-level programming language” : https://chai2010.cn/advanced-go-programming-book.

To further consolidate what you have learned, here are a few more advanced projects to recommend you:

  • rosedb:https://github.com/roseduan/rosedb, shameless recommend their own projects, a Go with the simple and efficient k – v storage engines.
  • gochat:https://github.com/LockGit/gochat, a lightweight im Go language implementation system, familiar with networking or interested can look at.
  • 7 daysgolang:https://github.com/geektutu/7days-golang, use 7 days Go from zero to realize web framework, a distributed cache, ORM framework, and the RPC framework, the amount of code is not much, but the quality is very good.

5. Web development

After mastering the basic knowledge, I can start to do some Web applications to further understand more Go language-related frameworks and common middleware in the production environment.

Recommended book Go Web Programming.



You can learn about the Web frameworks GIN and Beego: Both frameworks are quite popular, and you can choose one of them. GIN is recommended. Official documents are available in Chinese, click on the demo to see how to handle HTTP requests.

It is best to master the more popular ORM framework GORM, there are official Chinese documents, according to the demo knock basically two days can master, the back of the encounter will not check again.

It is ok to read official documents basically, need not look for other books, there is no more authentic data than official articles.

A few basic Web projects built with Go are recommended:

  • gin-vue-admin:https://github.com/flipped-aurora/gin-vue-admin, the use of Gin framework to build the background management system.
  • ferry:https://github.com/lanyulei/ferry, based on the Gin + Vue + Element separation UI before and after the end of the repair order system.
  • Go-admin: https://github.com/go-admin-team/go-admin, GIN + VUE + Element UI’s front and rear end separation permission management system.

For the learning of Web project, some students may think that the project is too complicated and do not know how to start at all. What I would suggest is that you can run the project locally and then breakpoint the overall flow of an HTTP request, making sense of one interface and not much else.

6. The service

At present, Go is widely used in micro-services, but to be honest, micro-services is such a huge topic that it is impossible for you to understand every core issue clearly, and there are no conditions, perhaps only in the company’s specific micro-service production environment, you can have a deeper understanding of the relevant concepts.

The recommended basic books for microservice overview, Microservice Design and Microservice Architecture Design Patterns, can help you understand the basics of microservice modeling, integration, testing, deployment, and monitoring.



Recommend GO language micro-service framework GOKIT, GOMICRO, GO-ZERO, Kratos, you can choose any one, understand its basic usage, design, etc. Among them, Go-Zero and Kratos are open source in China, so they both have relatively detailed Chinese documents.

Here is a recommended online learning material:

https://ewanvalentine.io/microservices-in-golang-part-1

Hand-to-hand implementation of a simple Go micro-service project, you can learn the relevant knowledge of micro-service through this project, and there is a Chinese version.


Finally, I would like to remind you that all the books mentioned in the article can be obtained in the public number [Roseduan writing place] back corresponding keyword access: [algorithm, operating system, network, database, GO, micro-service], on demand.