This is a creation in Article, where the information may have evolved or changed.
[Meow Golang (1)] Go language begins
Objective
Hello, everyone! I'm going to open the hole again today, recently learning and using the go language for a while, and also in assembling some good components to write the Phalgo development framework. In the thought of not being able to write a set of articles about the go language and some good components of the introduction use, Although I am also a half bucket of water but I believe in the process of writing can give themselves a lot of harvest, it is best to help you understand and familiar with the language of Golang, say not so start today's Go language tour it ~
Attached:
It's a kitty. Blog: w-blog.cn
Phalgo Address: Github.com/wenzhenxi/phalgo
Go Language Bible: Docs.ruanjiadeng.com/gopl-zh
1. The birth of the Go language
If the computer professional born children's shoes have heard the word Bell laboratory , this is the birth of the famous Unix system and C language place, after 40 in the same place Google work Ken Thompson and Rob Pike and Robert Griesemer designed the go language together to address the growing complexity of programming issues in the 21st century multi-core and networked environments.
The go language is the B language invented by Ken Thompson, Dennis M. Ritchie invented the C language evolved, is a member of the C language family, so many people refer to the go language as the C language of the 21st century. Looking at the trends of the past few years, the go language has become the most important basic programming language in the era of cloud computing and cloud storage.
On the author's experience for a period of time, go language is C language derived with C language features, after all, is called the 21st century C language, and go also from some modern language to absorb a lot of good places, such as C language does not have the GC mechanism, interface mechanism, there are many new features, And at compile time can be greatly shortened, relative to C + + One-tenth
Shows what early programming languages have had a significant impact on the design of the go language.
Image reference: Go language Bible
Go language to date version history:
2007年,谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。2009年11月10日,Go语言以开放源代码的方式向全球发布。2011年3月16日,Go语言的第一个稳定(stable)版本r56发布。2012年3月28日,Go语言的第一个正式版本Go1发布。2013年4月04日,Go语言的第一个Go 1.1beta1测试版发布。2013年4月08日,Go语言的第二个Go 1.1beta2测试版发布。2013年5月02日,Go语言Go 1.1RC1版发布。2013年5月07日,Go语言Go 1.1RC2版发布。2013年5月09日,Go语言Go 1.1RC3版发布。 2013年5月13日,Go语言Go 1.1正式版发布。2013年9月20日,Go语言Go 1.2RC1版发布。2014年6月19日,Go语言Go 1.3版发布。2015年8月20日,Go语言Go 1.5版发布,本次更新中移除了”最后残余的C代码”。2016年1月07日,Go语言Go 1.6版发布, Go1.6开始全面支持 HTTP/2 大幅改善GC性能
2.go language Features
Go has a lot of interesting features, the author according to their own use and collected the following points:
- The Go language is a type of safe and memory-safe programming language. Although there is still a pointer in the Go language, pointer arithmetic is not allowed
- The grammar structure of Go language is organically combined with the easy development of dynamic language, and the efficiency and performance are more balanced.
- Go language Excellent support for network communication, concurrency, and parallel programming to make better use of a large number of distributed and multicore computers
- The go language compiles very fast, usually only takes hundreds of milliseconds.
- Go language comes with GC garbage collection mechanism to solve memory problems
- Go language grammar is clean, neat and concise, the number of keywords is only 25
- The Go language does not have the concept of classes and inheritance, so it does not look the same as Java or C + +. But it achieves polymorphism through the concept of Interface (interface).
- The Go language supports cross-compiling, for example, you can develop applications running under Windows on a computer running a Linux system.
More features, I believe you have an abstract positioning of go
3.go Language Famous Project
Docker
By now, Docker is a success story that go is hard to find and hard to replicate. The Docker project, which received a $40 million financing for C round in September 2014, has an ultra-fast iteration, and now sees 78 versions from GitHub, and it's only a project that officially started in early 2013.
The Docker team likes to use the go language, primarily the ability to go with a strong standard library, a full development environment, and a cross-platform build.
GitHub Managed Address: Https://github.com/docker/docker
Lime
Revel is a highly productive go language web framework. The Revel Framework supports hot compilation, and when editing, saving, and refreshing the source code, Revel automatically compiles codes and templates, and all-stack features support routing, parameter parsing, caching, testing, internationalization, and more.
GitHub Managed Address: Https://github.com/revel/revel
InfluxDB
An open source distributed time series, event, and metrics database written by Go voice, without external dependencies. Its design goal is to achieve distributed and horizontal scaling expansion.
GitHub Managed Address: Https://github.com/influxdb/influxdb
Gogs
Gogs is a self-service git program developed by people without a sniff (GitHub). Gogs's goal is to create the simplest, fastest, and easiest way to build self-service git services. According to the authors, the choice to use go language development, that is, go allows gogs to be distributed through independent binary, and good support for cross-platform.
GitHub Managed Address: Https://github.com/gogits/gogs
4. Summary
We review our main explanation of the history of the Go language, it is a what kind of language its characteristics are what, there are those famous open-source projects, we are not full of the go language is filled with expectations, but also full of doubts, then please take the hope with the heart of doubt, To go to the next article of the Go Language-Installation and HelloWorld Chapter!
Note: The author has limited ability to say the wrong place hope that we can point out, but also hope to communicate!