与其站在选择的路口踟蹰,不如大胆地Just Go!

很早之前就想学习 go 语言了,今天终于开了个头,以教程的形式记录在此。纵观编程教程史,大多数的教程开篇便是环境搭建和最为经典的入门程序 Hello World ,我也不例外,按照惯例来,先从简介与环境搭建开始。

起源

Go 语言起源 2007 年,并于 2009 年正式对外发布。在 2010 年 1 月 8 日被 Tiobe(闻名于它的编程语言流行程度排名)宣布为 “2009 年年度语言”。

在 Go 语言出现之前,开发者们总是面临非常艰难的抉择,究竟是使用执行速度快但是编译速度并不理想的语言(如:C++),还是使用编译速度较快但执行效率不佳的语言(如:.NET、Java),或者说开发难度较低但执行速度一般的动态语言呢?显然,Go 语言在这 3 个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。

特性

  • 构建速度
    动态语言将快速编译作为自身的一大亮点,像 C++ 那样的静态语言一般都有非常漫长的编译和链接工作。而同样作为静态语言的 Go 语言,通过自身优良的构建机制,成功地去除了这个弊端,使得程序的构建过程变得微不足道,拥有了像脚本语言和动态语言那样的高效开发的能力。Go 语言中另一个非常重要的特性就是它的构建速度(编译和链接到机器代码的速度),一般情况下构建一个程序的时间只需要数百毫秒到几秒。C 语言中“头文件”的概念却导致越来越多因为依赖关系而使得构建一个大型的项目需要长达几个小时的时间,而Go 语言采用包模型这个模型通过严格的依赖关系检查机制来加快程序构建的速度,提供了非常好的可量测性。
  • 垃圾回收
    由于内存问题(通常称为内存泄漏)长期以来一直伴随着 C++ 的开发者们,Go 语言的设计者们认为内存管理不应该是开发人员所需要考虑的问题。因此尽管 Go 语言像其它静态语言一样执行本地代码,但它依旧运行在某种意义上的虚拟机,以此来实现高效快速的垃圾回收.
  • 协程与通道
    Go 语言的另一个目标是对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机,这一点对于谷歌内部的使用来说就非常重要了。设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。他们实现了分段栈增长goroutine 在线程基础上多路复用技术的自动化。

参考链接: https://segmentfault.com/a/1190000005666535

平台支持

Go语言设计支持主流的32位和64位的x86平台,同时支持在 Windows, 苹果Mac OS X, Linux 和 FreeBSD 操作系统。

开发工具

LiteIDE 是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由QT编写。下载 https://github.com/visualfc/liteide

其他主流的开发工具几乎都支持 GO 语言的开发,包括 Sublime text , Eclipse, IntelliJ Gogland 和 VIM 等。

相关链接

Gogland 官网 https://golang.org/doc/

知乎 https://www.zhihu.com/topic/19625982/hot

推荐阅读 《Go语言圣经》百度网盘 提取密码: 6vkg

本教程 Github 地址 https://github.com/dddreams/go-tutorial

ddAnswer

更多文章请关注微信公众号: zhiheng博客

如果觉得文章对你有用,转发、分享、赞赏才是真爱 [斜眼笑]