00 Opening Words Follow and Learn to Become a Go Language Expert

00 Opening Words Follow and Learn to Become a Go Language Expert #

Hello, I am Haolin. Today I would like to share my story with the Go language.

Go is a general-purpose programming language developed by Google. As one of the rapidly rising programming languages in recent years, Go has successfully entered the ranks of mainstream programming languages.

Its various highlights have been well received by programming enthusiasts. Especially in companies and technical teams that have high requirements for teamwork, Go programming is being widely adopted, and the number of users is continuously growing at a rapid pace.

I personally really like the Go language. I started paying attention to Go language since the end of 2012. Although this date is not very early compared to the birth of Go language on November 10, 2009, I can still be considered one of the earlier users in China.

Go programs can run on servers with operating systems such as Windows, Linux, and FreeBSD, and can be used to provide basic software support, API services, web services, and more.

Go language has also actively explored mobile development and can now run programs on Android and iOS. In addition, Go language has joined forces with WebAssembly and joined the WASM platform. This means that in a short while, internet browsers will also be able to run programs written in Go.

From a business perspective, Go language has already flourished in the fields of cloud computing, microservices, big data, blockchain, and the Internet of Things. Some have already achieved high usage rates, while others have found their place. Even in the field of data science and artificial intelligence where Python dominates, Go language is slowly penetrating and making a name for itself.

From a company perspective, many big companies have embraced Go language, including Alibaba, which dominates with Java, not to mention star companies such as Didi, Toutiao, Xiaomi, Qihoo 360, and JD.com, who are enthusiastic about Go language. At the same time, startups also love Go language because it is easy to learn, has a wide range of libraries, and runs quickly, making it suitable for quickly building internet software products, such as Qingchou, Kuaishou, Zhihu, Tantantan, Meitu, Cheetah Mobile, and many more.

I started preparing to write the book “Practical Go Concurrency” in 2013, and after going through some difficulties, the book was finally officially published by the People’s Posts and Telecommunications Press in association with Turing Company at the end of 2014.

Up to now, the 2nd edition of “Practical Go Concurrency” has been published for over a year and has received a warm welcome from a large number of Go language enthusiasts. At the same time, I have also initiated and maintained a Go language enthusiast organization called GoHackers, which now has a membership of nearly 4,000. We hold various activities every year to exchange techniques and ideas. Of course, we also communicate in online groups on a regular basis. You are welcome to join us.

In early 2015, I started helping companies and teams recruit Go programmers. I must have interviewed hundreds of Go programmers. Although the content of an interview is far more than just hard skills like technical ability, not to mention being limited to just one programming language.

But let’s focus on Go language here. Among all the candidates, the proportion of those who truly have a solid foundation in Go language is probably no more than 50%, and the proportion of those who are truly familiar with advanced Go language techniques is even less than 30%. Of course, the situation has been improving year by year, especially this year.

The purpose of writing this column is to allow enthusiasts who hope to quickly master the Go language to learn through a familiar and friendly path. I do not want to elaborate on every detail of the Go language specification and every API in its standard library, nor do I want to write teaching articles that force-feed information. What I really want to do is to elaborate on the key points and main threads of this language. I will strive to explore our learning methods for new skills, especially programming languages, and guide you step by step in memorization and practice. I almost always start with a simple question as an introduction and then expand on a series of related and important concepts and knowledge to help you engage in divergent thinking.

I hope to help you occupy important positions using this approach of providing a point first, then a line, and then a surface. I cannot guarantee anything else, but if you follow through this column with me seriously, you will definitely have a basic mastery of the Go language.

Why do I say basic mastery? Because software technology, especially programming technology, requires a lot of practice and even experience to fully master, and this takes time and cannot be rushed. However, this column will definitely become the most important stepping stone for you to learn the Go language.

Now, let’s take a look at the main modules of this column. It is divided into 3 major modules, consisting of 5 chapters.

  • Basic Concepts: I will explain the basics of the Go language, including some fundamental concepts and operating mechanisms. These are what you must know when you first encounter Go and will also help you understand the subsequent knowledge.

  • Data Types and Statements: The data types in the Go language are mostly very distinctive. Only when you understand them can you truly master the Go language. I will explore their wonders with you. Additionally, I will reveal how to manipulate them using various syntax and statements.

  • Testing Go Programs: Many programmers always think that testing is the responsibility of another team, but that is not the case. Unit testing and even interface testing should be done by programmers and should be taken seriously. How to do testing well in Go? I will make it clear and explain it.

  • Usage of the Standard Library: Although Go provides its own efficient concurrent programming method, synchronous methods should not be ignored. These methods are concentrated in the sync code package and its sub-packages. This section also involves byte and character issues, OS operations, and web service writing, all of which are likely to be used in our daily work.

  • Nuggets of Wisdom in Go: This section will discuss some common problems we may encounter when using Go in software projects. It will include at least two articles as gifts for Go enthusiasts. Although I already have a plan, I choose to keep the specific content confidential for now. Please join me in having a little anticipation.

I hope this column can help or inspire you to do more practice and thinking. At the same time, I hope that you can experience the joy of learning through the study of this column and be more confident when applying for Go-related positions.

So, if you choose to learn, please learn deeply. I don’t dare to call myself a preacher, but I am willing to promote excellent technology. If my output can contribute to your growth, it will be a source of joy for me. I also believe that these dozens of articles can achieve this.