This is a creation in Article, where the information may have evolved or changed. Go is a compiled language, rather than a virtual machine-based interpretation of the language, do not talk about the performance of the compilation and interpretation of the problem, but the subjective feeling that the compiler generated by the executable program and the operating system between the natural. It's like wearing a condom and not wearing a condom. Go in addition to the compiler and C language, there are a lot of similarities, all say Go is C's enhanced version, so I think go should be a lot of C language programmers favor, at least I did not hold. Python is I think and c as concise and elegant language, but I really do not like the dynamic type, the disadvantage is not much to say; Go claims to have the development efficiency of Python, but the use of the same static strong type as C, and does not support type casting, no loss is the strengthening of C language, security at the language level finally made a strict guarantee.
Go built-in string, array, map and even pointers, and so on, to meet the C-language player's reliance on the pointer, but also facilitate the development of the program. Provides a more complete base type system, which can really bring high efficiency to development. In addition to perfecting the type system, it also provides a simple package to implement object-oriented programming, all of which are supported at the language level, rather than being limp with the C language for object-oriented programming. Today, object-oriented value is not so obvious, especially java,c++ provides a huge language system, a variety of interfaces, various inheritance, abstract constantly, too easily lead to excessive design; But the go language provides only the most basic object encapsulation, without those complex features, you want to over-design is difficult.
Go introduces a package management mechanism that, like Java, makes it easy for programmers to develop in a modular way. Although, the C language veteran player can also use C language for modular system design, but for a novice, this undoubtedly has a certain degree of difficulty. The package mechanism introduced by Go language provides you with the idea of modularization programming at the language level.
Python has a tuple type, and one obvious benefit of this type is that the function supports multiple return values. I've always wondered. C + +, Java and other traditional languages do not support multiple return values at first, is it really closely follow the mathematical model y = f (x) results? With such excellent features, the go language is of course not spared, and a cursory look at the libraries provided in the Go project reveals that an important application of the multiple return values is to separate the computed result from the error from the function's return. One of the things that a C function often does is that a positive return value is the real result, and if 1 is an error in the function evaluation process, and the Java function throws an exception out of the process error, terminating the calculation. C and Java are not perfect, C seems too weak, Java seems too bloated. Abnormal mechanism is really a very earth-suppressed technology, saying that C + + programmers rarely use exceptions, and Java programmers are always bored, the result is the code nesting level miserable.
C-language programmers are probably the most painful memory management problems, missing memory release caused by memory leaks in the C system also occurs frequently. Since go is a C enhancement, the GC is implemented, and the programmer is no longer a big head for memory leaks.
In addition to these language-level excellent features, go the biggest highlight is its support for parallel programs, C/java and other languages are through the thread to achieve parallelism, the language itself does not support parallel; The old Ada language, however, has achieved a language-level parallelism early on. Go's parallelization is called Goroutine, so the concept of threading is not available in go, which makes it easier for programmers to write programs for multicore.
In the end, I attach the phrase "small language, Big library is king" on Google +.