目录
文章目录隐藏
  1. 1. Go 语言的出身
  2. 2. Go 语言的特点
  3. 3. Go 语言的使用场景
  4. 4. Go 语言开发的经典项目
  5. 5. 与其他开发语言对比
  6. 6. 为什么要学习 Go 语言
  7. 7. Go 语言的代码
  8. 8. 小结

学习任何知识之前肯定要对这个知识有一个简单的了解,当然学习 Go 语言也一样,这个小节我们就来简单认识下 Go 语言,了解下 Go 语言的来龙去脉。

1. Go 语言的出身

Go(又称 golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

罗伯特·格里泽默(Robert Griesemer),罗布·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于 2007 年 9 月开始设计 Go,后来 Ian Lance Taylor、Russ Cox 加入项目。Go 是基于 Inferno 操作系统所开发的,于 2009 年 11 月正式宣布推出,成为开放源代码项目,并在 Linux 及 Mac OS X 平台上进行了实现,后来追加了 Windows 系统下的实现。在 2016 年,Go 被软件评价公司 TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go 已经开始每半年发布一个二级版本(即从 a.x 升级到 a.y)。

2. Go 语言的特点

  • Go 语言可以直接编译成主流操作系统支持的可执行文件,部署服务只需要扔一个可执行文件上去直接运行就好了;
  • Go 语言有不输于动态语言的丰富静态库。归功于强大的官方团队和社区,目前 Go 语言几乎什么都可以开发;
  • Go 语言天生支持并发,这是个近乎无敌的设定;
  • Go 语言具有自动垃圾回收机制;
  • Go 语言简单易学,因为它几乎支持常用的语言的所有特性:继承、封装等等;
  • Go 语言内嵌支持 C 语言,你甚至可以直接在 Go 语言里面写 C 语言代码;
  • Go 语言支持交叉编译,你可以在 Windows 环境中编译任何平台的 Go 可执行程序。但是需要注意的是,如果你在 Go 程序中写了 C 语言,你就不能只用交叉编译的特性了,所谓鱼和熊掌不可兼得嘛。

3. Go 语言的使用场景

  • 服务器编程;
  • 分布式系统,数据库代理器;
  • 网络编程,这一块目前应用最广,包括 Web 应用、API 应用、下载应用;
  • 内存数据库,前一段时间 Google 开发的 groupcache,couchbase 的部分组件;
  • 云平台,目前国外很多云平台在采用 Go 开发,CloudFoundy 的部分组件,前 VMare 的技术总监自己出来搞的 apcera 云平台;
  • 区块链技术研发。

4. Go 语言开发的经典项目

  • Docker:基于 lxc 的一个虚拟打包工具,能够实现 PAAS 平台的组建。
  • Hyperledger fabric:市面上最流行的两大区块链平台之一。

5. 与其他开发语言对比

Go 语言为什么能在现有的成熟语言中脱颖而出呢?这要归功于它比 Java 还简洁的语法,接近 C 语言的编译执行速度,甚至还有不亚于脚本语言的开发速度。在目前最要求效率的当下,它无疑会是一匹黑马。但是和其它语言比起来劣势也很明显,因为它出现的时间短,学习资料少,第三方支持库虽然多,但是比起 Java 以及 C 语言还是远远不够。Go 语言不支持泛型,对于学习 Java 的开发人员来说一开始会很不适应。

6. 为什么要学习 Go 语言

综上所述, Go 语言出身名门,血统纯正。从学习难度上来说语法简单,功能强大。从可扩展性上来说第三方库众多,标准库强大稳定。性能上更是拥有无可挑剔的自动调度线程。Go 语言完美地协调了运行效率和开发效率之间的关系。而且 Go 语言目前已经广泛应用于虚拟容器、区块链等传统的和高精尖的产业中,将来会有巨大的前景。不管是国内还是国外,对 Go 语言的程序员的需求只会越来越多。

7. Go 语言的代码

接下来我们来看看 Go 语言怎么用代码来和你 say hello。

package main

import "fmt"

func main() {
    fmt.Println("Hello Codey !")
}

上述代码的输出结果就是:Hello Codey !

8. 小结

Go 语言目前的用途主要是在服务器和区块链上。但是它的功能不止于此,需要我们多去开发多去使用,使得 Go 语言的生态更加完整,更加强大。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 01. Go 语言简介

发表回复