Google Go language from getting started to the open source projects your app needs

Source: Internet
Author: User
Tags sublime text influxdb redis cluster redis server
This is a creation in Article, where the information may have evolved or changed.

The Go language was officially announced in November 2009 as an open source project, and has become more and more influential this year, and is among the top 20 in the TIOBE programming language rankings. Many developers are gradually looking at this language, this article has collated some of the better learning and application of the Go language development project, I hope for the developers who have not contacted the language to provide a way to learn and understand the language.

About the Go language:

Go is a compiled, hair-style, and garbage-collected programming language developed by Google. Because its construction simplifies the work of running code concurrently, there is a parallel programming pattern, so this language is also designed to solve multiprocessor tasks. The go language was developed based on the Inferno operating system and implemented on Linux and Mac OS X platforms, followed by the implementation under Windows.

The Go language originated in 2007 and was formally released in 2009. It started as a Google 20% part-time project from September 21, 2009, which involved employees using 20% of their free time to participate in the Go language research and development work. The project's three leaders are well-known IT engineers:Robert Griesemer, who participates in the development of Java HotSpot virtual machines,Rob Pike, head of the Go language project, Bell Labs Unix team members, The projects involved include the Plan 9,inferno operating system and the Limbo programming language;Ken Thompson, Bell Labs Unix team member, one of the founders of C language, UNIX and Plan 9, and Rob Pike co-developed U TF-8 Character Set specification. This is a gold team of "the Father of inventions" in the field of computer science, and they have very deep insights into system programming languages, operating systems and parallelism.

First, introductory article

0. Open Source Book "Go Web Programming"

An open source book "Go Web Programming", "Build Web Application with Golang". The author of the book mainly shares some of the things that go writes about Web applications:

    • For students who have turned from Php/python/ruby, learn how go writes Web application development
    • For those of you who have turned from C/s + +, learn how the Web works.

1. "The Go" Chinese version

Because there is no better go language books at home, and foreign excellent books because of the English sake to some extent also for many go language enthusiasts have brought some learning problems, although the "way to go" this name for the current go language version of a small portion of content is relatively outdated, But for the moment a rare good book, part of the content has been approved by the author according to the current Go language version of the changes. and open source for free to share to the needs of Go language enthusiasts.

2. Video Audio Tutorial "Go Programming Basics"

"Go Programming Basics" is a set of video-audio tutorials for Google's go language, primarily for novice-level learners. Each class will create a document (e.g., LECTURE1.MD) as a class note. The class notes contain the knowledge points covered by the class and the point at which the knowledge points begin to be explained, so that learners can quickly locate the part they want to understand and save time that is unnecessary to waste. In addition, if the learner is confused by a slip of the tongue or other reasons in the tutorial, it will also be added to the lecture notes.

3.Go Package document Chinese Translation

This is the standard package for the Go language and part of the third-party package document Chinese translation.

Project Source: Http://git.oschina.net/liudiwu/pkgdoc
Online Browse: http://mygodoc.oschina.mopaas.com/

Ii. Development of the article

0. Go Language development tool Liteide

Liteide is an open-source, cross-platform, lightweight go Language integrated development environment (IDE).

1. Web-based Team Go language IDE Wide

There are some flaws or regrets in the more popular Go Ides:

    • Text Editor classes (Vim/emacs/sublime/atom, etc.): For beginners The threshold is too high to build complex
    • Plug-in class (Goclipse, etc.): Need the original IDE support, not professional
    • Liteide: The interface is not modern
    • No team development experience

The Go IDE is very rare, the IDE developed with go itself is not, and the Go IDE is a good attempt.

Online Experience: https://wide.b3log.org

2. Eclipse's Go plugin goclipse

Goclipse is an Eclipse plugin that adds the Go language programming feature to the Eclipse platform. The purpose of Goclipse is to create an environment for beginners to develop the Go language. The platform has been slow to develop, but has continued.

3. Code Editor Lime

Fredrik Ehnbom developed a new Code editor Lime text with Go language, known as the sublime text open source implementation. It is compatible with sublime text shortcut key settings, compatible with textmate color themes and syntax definitions. The back end of Lime Text is implemented with Go, while the front end uses ERMBOX,QT (QML) and Html/javascript.

4. Go's full stack Web frame Revel

Revel is a highly productive Go language WEB framework, and its ideas come entirely from the Java Play 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.

5. Go Program Debugging Tool Godebug

Godebug is a different Go program debugging tool, the traditional compiler language debugger uses the underlying system calls and reads the binaries for debugging various symbols. It's cumbersome and difficult to transplant. Godebug uses different methods, direct the source code as the target program, insert the debug code in each line, and then compile and run. The result is a fully functional debugger that can be ported to different platforms. In fact, thanks to the Gopherjs, you can also debug on a browser.

6. Go Test Tool Goconvey

Goconvey is a pretty good go testing tool that supports go test. Can be used directly in the terminal window and the browser.

III. Application of the article

0. Linux Container engine Docker

Docker is an open-source application container engine that allows developers to package their applications and dependencies into a portable container, and then publish them to any popular Linux machine or virtualize them. Containers are completely sandbox-aware, with no interface (like IPhone apps) between them. There is little performance overhead and can be easily run in the machine and data center. Most importantly, they are not dependent on any language, framework or packaging system.

1. Redis Cluster Solution Codis

Codis is a distributed Redis solution, for upper-level applications, there is no obvious difference between connecting to Codis Proxy and connecting to native Redis Server (unsupported list of commands), and upper-level applications can be used like a single redis, Codis The bottom layer will handle the forwarding of requests, non-stop data migration, and so on, all the things behind, for the front of the client is transparent, you can simply think behind the connection is an infinite memory of the Redis service. Currently pea pods are already in use in this system.

Architecture:

2. Easy to build self-service Git Services Gogs

Gogs's goal is to create the simplest, fastest, and easiest way to build self-service Git services. Using go language development enables Gogs to be distributed through standalone binaries and supports all platforms supported by the go language, including Linux, Mac OS X, Windows, and ARM platforms.

3. Go crawler Software Pholcus

Pholcus (Ghost spider) is a pure Go language support distributed high-concurrency, heavy-weight crawler software, located in the Internet data collection, for a certain Go or JS programming basis for people with a need to focus on the rules to customize the powerful crawler tools.

4. Go Application Framework Beego

Beego is a Go Development application framework, the idea comes from the tornado, routing design from Sinatra, support the following features: MVC, REST, intelligent routing, log debugging, configuration management, template automatic rendering, layout design, middleware insertion logic, convenient json/ XML service.

5. Open Source messaging System NSQ

NSQ is an open source messaging system with no central design, automatic node registration, and discovery. Can be used as the basis for internal communication framework, easy to configure and publish. Architecture:

6. Time series, events and indicators database InfluxDB

InfluxDB is an open source distributed timing, event, and metrics database. Written in the Go language without external dependencies. Its design goal is to achieve distributed and horizontal scaling expansion.

7. Open Source PaaS system Flynn

Flynn is an open-source PaaS system, developed by Docker. Written in Go language. Support databases include Postgres, Redis, and MongoDB. Flynn uses a fully modular design, and any component and module can be replaced independently.

Open source Chinese organization translation Flynn Chinese document: Http://flynn.mydoc.io

8. Container Cluster Management system Kubernetes

Kubernetes is an open source container cluster Management system from the Google cloud platform. A scheduling service that builds a container based on Docker. The system can automatically select a working container for use in a container cluster. Its core concept is the Container Pod.

9. Distributed SQL Database Tidb

TIDB is a distributed SQL database developed by the domestic Pingcap team. Inspired by Google's F1, TIDB supports features that include traditional RDBMS and NoSQL.

TIDB source code has been hosted on the Git@osc, for details, please see: http://git.oschina.net/ngaut/tidb

Architecture:

Goim the IM and push services developed by Go

Goim is a cluster-enabled IM and real-time push service (supports websocket,http and TCP protocols).

But while Go is developing quickly, developers should choose whether they want to learn more about the language and its applications, depending on their situation. If you have other good open source projects in learning the Go language, please leave a comment in the comments section for learning and communication.

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.