From time to time, people ask me some questions about go language learning route and learning resources. This article will talk about it in detail. I hope to give some help to those who are learning or want to learn go language.
It should be noted that learning according to what I recommend, fully mastering go related development knowledge and finding go development work should be no problem. Of course, the specific degree depends on the individual.
It is explained that all books mentioned in the article can be in the official account.Roseduan’s writing place】The background replies to the corresponding keywords to obtain: [algorithm, operating system, network, database, go, micro service], which can be obtained on demand.
No matter what programming language you learn, these basic knowledge is universal and they are very important. So I think I should just take it out, but now there is a lot of knowledge on the Internet. I can find many related contents by searching the official account and public number, so I will simply say here.
Recommended introductory books are Dahua data structure, Aha! Algorithm, comic algorithm · Xiaohui’s algorithm journey and algorithm diagram. For advanced words, you can see Introduction to algorithm and algorithm.
If you think books are boring, there are also some paid columns on the Internet, you can subscribe to see them. Note that if you are not in the direction of algorithm, you can master the most basic and commonly used content. There is no need to knock too many advanced data structures and algorithms.
If you consolidate your algorithm knowledge, you can brush a few questions on leetcode. Of course, there is another function of this content, that is to deal with the interview. Everyone knows it. My GitHub has a project that can help you learn and consolidate algorithms. Address:
The project uses go, Java and python to implement common data structures and algorithms, as well as related leetcode topics.
It’s good to have a brief look at this content and understand the basic concepts. In the first few years of work, you may not be able to use too much knowledge of the operating system, but believe me, this is a necessary hurdle for the advancement of your career and will meet it sooner or later.
Recommended learning resources: Books: concept of operating system, in-depth understanding of computer system, modern operating system.
I can’t read the books. I can understand you very well (because I can’t read them either). Here is an online operating system course recommended by the school:
It is an open course of Tsinghua University. The concept is relatively basic and easy to understand. If you want to go deeper, people also have supporting operating system experiments to follow.
Basic books: illustrated HTTP, illustrated tcp_ip, and how the network is connected.
Advanced books: computer network, top-down method, tcp_ip explanation.
Similarly, I know you can’t read books. There are some open online courses of famous universities on MOOC of Chinese universities, which are relatively basic. You can find them on MOOC. There are many good quality courses.
Needless to say, the importance of database is essential knowledge.
There should be no difficulty in mastering basic SQL. Just practice more. The recommended books are SQL and mysql.
If you want to advance, you can learn more about some basic database design concepts. The recommended books are database system concepts. For advanced mysql, such as B + tree storage model, transaction, index, lock, etc., the recommended books are high performance mysql and MySQL technology insider: InnoDB storage engine.
Finally, I have come to the topic of go language. If you are the zero foundation of go language or have just started, you can follow my path to learn and consolidate it.
The recommended introductory books are go language learning notes, go language fun guide and head first go. There is no big problem in getting started by typing more codes along with the books.
There are also some materials I have hidden for online learning go language:
- Go by example Chinese version:https://gobyexample-cn.github.io , use code examples to learnGo language.
- Go interview questions:http://www.topgoer.cn/docs/gomianshiti/mianshiti It is also explained by using code examplesGo, it’s also good to prepare for the interview.
- Unheard boss’s online Getting Started Guide:github.com/unknwon/the-way-to-go_Z…
- Follow the unit test to learn go:https://github.com/quii/learn-go-with-tests , available in Chinese.
After learning the basics, I know you may want to try. Here are some primary projects recommended. You can choose one or two you are interested in at will.
- starcharts：github.com/caarlos0/starcharts, the function of the project is to generate the star trend chart of the project above GitHub. There is not much core code, which is very suitable for practice.
- gorched：github.com/zladovan/gorched, use go to write a small game.
- pacgo：github.com/danicat/pacgoIt is also a small game written in go. Each step has a detailed description and code implementation.
- wechat-go：github.com/songtianyi/wechat-go, the go implementation of wechat web version API simulates the login / contact / messaging functions of wechat web version.
After mastering the basic go related grammar knowledge, you may need to have a deeper understanding of the go language. For beginners, you can choose the parts you are interested in and have a look. It’s unlikely to get it all at once.
Note that this content is relatively independent and can be viewed at any time, which will not hinder you from learning the following content.
The recommended books here are go programming language (known as go Bible), go expert programming and go language advanced programming.
Online learning materials:
- Go language design and Implementation:draveness.me/golang。
- Go Language Advanced Programming:chai2010.cn/advanced-go-programmin…。
To further consolidate your knowledge, here are some advanced projects recommended to you:
rosedb：github.com/roseduan/rosedb, shamelessly recommend your own project, a simple and efficient K-V storage engine implemented with go.
gochat：github.com/LockGit/gochat, a lightweight IM system implemented in go language. Those who are familiar with or interested in the network can have a look.
7DaysGolang：github.com/geektutu/7days-golangIn 7 days, go was used to implement web framework, distributed cache, ORM framework and RPC framework from zero. The amount of code was small, but the quality was very good.
After mastering the basic knowledge, you can start doing some web applications to further understand more go language related frameworks and common middleware in production environment.
Recommended book go web programming.
You can learn from the web frameworks gin and beego: both frameworks are popular. In fact, you can choose one of them. Gin is recommended. The official documents are in Chinese. Click according to the demo to understand how to handle HTTP requests.
It’s best to master the popular ORM framework Gorm. There are official Chinese documents. You can master it in two days according to the demo. If you don’t meet it later, check it again.
Basically, you can read the official documents without looking for other books. There is no more authentic material than the official articles.
Several basic web projects built with go are recommended:
- gin-vue-admin：github.com/flipped-aurora/gin-vue-…, a background management system built using gin framework.
- ferry：github.com/lanyulei/ferry, a work order system based on the separation of front and rear ends of gin + Vue + element UI.
- go-admin：github.com/go-admin-team/go-admin, the front and back ends of gin + Vue + element UI are separated from the permission management system.
For the study of web projects, some students may think that the projects are too complex and don’t know how to start. What I want to suggest is that you can run the project locally, and then debug the overall process of an HTTP request at a breakpoint to understand one interface. Others are similar.
At present, go is also widely used in microservices, but to be honest, microservices is a huge topic. You can’t understand every core problem, and there are no conditions. Maybe you can have a deeper understanding of relevant concepts only in the company’s specific microservice production environment.
Recommend a basic book “micro service design” and “micro service architecture design pattern”, which can help you understand some basic knowledge of micro service modeling, integration, testing, deployment and monitoring.
Recommend go language micro service frameworks gokit, gomicro, go zero and Kratos. You can choose any one to understand its basic usage, design, etc. Go zero and Kratos are open source in China, so they have more detailed Chinese documents.
Here is an online learning material:
Hand in hand to implement a simple go micro service project. You can learn about micro services through this project, and there is a Chinese version.
Finally, I would like to remind you that all books mentioned in the article can be in the official account.Roseduan’s writing place】The background replies to the corresponding keywords to obtain: [algorithm, operating system, network, database, go, micro service], which can be obtained on demand.
This work adoptsCC agreement, reprint must indicate the author and the link to this article