Go language learning process

Source: Internet
Author: User
This is a creation in Article, where the information may have evolved or changed.

Contact Go is the 2012, the real start of the system of learning and development system is 2014 years, go language learning is one of their 2014 years of important work, the summary of Go language learning, is also considered one of the end of the year

1. Reasons and motivations for learning go:
1> has previously done 2 years of Unix C development experience, for the C language has a special feeling, go is particularly suitable for my appetite, after the use of love;
The 2>go language team is too dazzling and powerful: the Thompson Turing Prize winner, the co-inventor of Unix and C, the main developer of the Pike PLAN9 operating system, the UTF-8 inventor; Robert Griesemer the hotspot in Java, JS V8 engine developer;
3> domestic preacher's highly recommended: Xu Xiwei brother, brother Xie Mengjun and other strong recommendations and related books came out;

2. Learning Materials:
Books are: Lao Xu's "Go Language Programming", Lao Xie's "Go Web Programming", rain marks of "Go language learning Notes", golang.org above the "effective go", "The Go Programming Language specification", The Go standard library and many open source libraries on GitHub

Of course, no-smell video tutorial is also very suitable for beginners, followed him to the code to knock over the multiplier

3.go Learning Experience:
Go language basic knowledge is very simple, simple to a few days can learn, and can start to develop, but to be proficient, not a few years of skill is difficult to achieve, this is learning any programming language must experience, you can do is: Keep writing code, keep thinking, keep summing up, constantly read others code, Keep to the master to consult;


4.go learning difficulties, the difficulties encountered in my study, as well as relevant reference materials indexed, this is a very valuable thing:

    • Go map Slice string array interface The underlying data model, where array and slice are the root causes of confusion; see: Russ Cox very classic article

GO Data Structures

Arrays, slices (and strings): The Mechanics of ' append '

    • Go defer panic recover is unique to go, relatively new, need to use the habit;

Several scenarios for using defer

    • Go interface interface of the underlying implementation mechanism (can go deep into the source) (Deep to understand: interface assignment, interface transformation, interface assertion and go dynamic); For the Go Language interface is the soul;

See also: Old Xu "Go Language Programming" Chapter 9th section 9.5 interface mechanism

Join: A big foreign guy wrote: How to use interfaces in Go

See also: Interfaces_and_types

See ALSO: Learning Go-interfaces & Reflections

    • Go type System: This is very important for mastering a language: the static type (language level is the statically typed language), the dynamic type (for the interface), the underly type (the underlying type is for casts and assigns);

See also: the Go programming Language Specification-type

See ALSO: Learning Go-types

    • Go function: Multivalued return, with named return parameter usage; closure; function is a class citizen; The function is also an underlying type, which can be defined by type XXX func as a new type;

See also foreign Daniel: Function Types in Go (Golang)

Go closures: A discussion on the closure of function programming (Closure) Go Language (Golang)-closures

Go functional Programming: GO-functional programming practice

    • Go parameter pass: function parameter All is pass value: Even if pass a pointer, pass is also a copy of pointer, the closure reference variable is a reference;

The so-called reference refers to the use of pointers, but there is the role of pointers, reference: A as a parameter transfer function inside, the function of internal modification of a but change the value of external a

Pointer: *a is passed as a parameter to the inside of the function, and the function internally modifies the *a value to be changed;

See also: pass-through and citation of the Go language this article analyzes the very rare good articles in place

    • Go error handling mechanism, error and nil relationship, see

Nil value and nil for error type in Go


    • Go Nil has also been a stumbling block for go learners

There's an article on the error nil related

Here is a Interface nil article Golang: detailed Interface and nil Chen brother about go of a few articles are very grounded gas, suggestions have looked

    • Go package, Global Const (constant), VAR (variable) load order, and package reference mechanism:

See also: Lao Xu "Go Language Programming"

    • Go reflect: Reflection is a powerful weapon, something that a novice must dabble in to become a veteran.

See also: Official version laws-of-reflection

Translated by: The-laws-of-reflection I think this is the best article in translation, which incorporates the author's thoughts and perceptions.

And my abbreviated version, more of a guideline for the API: the Laws of reflection

Reflection Small Test Skill: Refer to this article in Golang with the name of the function Mikespook translation of other articles is also very good

Martini Framework uses the Classic DI library: inject textbook office to implement injection

Inject library code is very obscure, you can refer to Brother Chen's side of the classic article Golang:martini inject source analysis This article is easy to read, written very good

Reflection is closely related to interface, go type System, REFELCT. TYPEOF returns the dynamic type of the interface, the Func (v Value) type () type, which returns the type of Value, reflect. Type is the underlying type expression

    • Go channel and Gorutone implementation principle, use method, concurrent programming mode;

See "Go Concurrency Programming"

See system knowledge behind the Goroutine

    • Go GC: Understanding the GO memory management, GC implementation principle go debugging and performance analysis, GDB debugging technology

See Rain Scars Study Notes

5. Framework Learning:

Thanks to the Beego framework, Beego is very easy to get started, modular design, and modules are very complete; Xie adults more enthusiastic, QQ Group is more active, my two small systems are based on beego development; This reading of the small black for the people who want to see the framework of the source is a gospel;

Martini just saw inject that part, 2015 hope to have time to look at Martini and Revel.


6. Look forward to

Looking forward to a cow who can give a special introduction to go how to design a large system of books, go language design patterns and object-oriented design patterns are very different; Lao Xu has a ppt inside the introduction of the connection and the combination of the language, to the size of seven cattle system, should be able to abstract a set of patterns out, someone do? Concurrent related design patterns, there are many articles on the Internet, but it is not very systematic; I hope 2015 of us can stand up and do this, and we stand on the shoulders of giants and move on.


In fact, not to learn to study: I am a large part of the time or the side of the development, learning standard library, side to learn, encountered a larger common module to GitHub to find out whether it has been realized, if you think you rewrite better than the original author, you can pull request. Of course, in the development of the blind spot of their knowledge, it is necessary to have a unit of the spirit of research, to understand it, technology will naturally be improved, personal thin see, cautious reference.


Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.