前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >回归简约——Go语言简介

回归简约——Go语言简介

作者头像
Techeek
发布2017-12-21 16:12:34
1.3K0
发布2017-12-21 16:12:34
举报
文章被收录于专栏:云计算

GoLang(通常缩写为Go)是很多程序员都希望学会使用的最新语言。在本文中,我将介绍go语言的功能、潜力以及是否应该关心Go的发展。

GO的发展

上图为go语言的吉祥物,也是go语言的logo

Go没有想像中那么新。它起源于2007年谷歌内部项目研发,直到2009年才被公开发布。go语言真正的转折点是2012年3月发布了一个新的版本,这个版本的介绍您可以查看这篇文章

由于现有的语言不适合大规模服务器基础设施部署,所以才有了Go语言的诞生。但是Go语言没有将高效的编程

、编译、执行结合起来。语言嘛,总会对使用某些方面做出妥协。

Go的核心特征在于其稳定性和效率,语言的设计尽可能简单,从现代化的编程观点出发,而不是建立在几十年老旧的的发展思想之上。

谁在使用Go?

你可能会觉得大家都在谈论Go,但是它的流行程度趋势还是值得商榷的。就像Docker一样,对可扩展应用程序日益增长的需求意味着大家都在讨论这几个新兴的词语。但这并不意味着他们在生产环境中广泛使用。除了免费使用外,Go是一颗冉冉升起的新星,吸引了众多的贡献者及大佬。go语言绝对是一种适合学习和欣赏的语言,但也许并不能支持你所有项目开发。

随着大规模的应用部署,没有一种语言在整个开发中占主导地位,但这里有一些出名的项目及公司俄日使用了Go语言作为他的后台:

Go的特点

Go被选为大规模,分布式和网络应用的大部分原因可能是由于其功能集的强大。

简约设计

Go的设计很实用,功能也很简单。许多C语言无用且复杂的思想概念已经被Go语言所去除。例如,C语言具有面向对象的概念,但在Go中这些已经是最基本的东西。

尽管如此,Go已经设计的很棒了,不需要太多的编码,又能够处理复杂的任务。

静态类型

为简单起见设计的语言(如JavaScript)允许您动态创建变量,而你不必担心为这些变量分配正确类型的值。语言编译器将在运行时根据您的程序逻辑计算出所需的变量类型。这导致了更简单的编码体验,但是可能会导致执行效率低下和错误频出。

像Go这样的静态类型语言会强迫使程序员声明变量类型,并在编译时检查代码是否正确使用变量。这可能会让代码更长,但却获得更好的编程效果,也会更早识别并消除潜在错误,并通过消除这种错误动态检查来提高效率。

垃圾回收

垃圾回收是应用程序自动内存管理的一种形式。其功能是确定应用程序不再需要内存中的哪些对象,并回收新对象的空间。某些资源(如网络套接字和数据库句柄)仍然需要手动处理。

编译

不像PHP和JavaScript这样的语言,执行指令在运行时直接通过解释器执行。而Go是一种编译语言,在执行之前,代码首先被编译成机器语言。

编译后的语言运行速度更快,效率更高,但查看修改代码却很麻烦,程序支持的所有平台都需要单独和专门编译才能运行。

Go以其编译速度快而著名,与开发速度的与解释性语言(PHP和JavaScript等)差不多。

大型标准库

标准库是跨编程语言提供的一组库函数。当你的代码需要调用他们时,这些函数在一个库中就可独立被调用。Go有一个大型的软件包库,涵盖压缩、I / O控制、数据库访问等功能。

我们在这里做一个简单的演示,比如您需要导入image包的子包gif,你只需要这样简单的操作:

代码语言:javascript
复制
import "image/gif"

要导入image包及其子包,就这样做:

代码语言:javascript
复制
import "image"

并发

Go支持多种CPU,复杂的I / O控制和分布式基础设施,其并发处理功能是他独树一帜的地方,也是超越其他语言的优势之一。go通过使用channels概念来控制访问,Go消除了其他并发语言中遇到的共享变量的问题。

最简单的方法是使用go关键字:

代码语言:javascript
复制
    package main

    import "fmt"

    func PrintGreeting(greeting string) {
        fmt.Println("Hello " + greeting)
    }

    func main() {
      go PrintGreeting("World")
    }

这包括两个并发运行的main函数和PrintGreeting函数。这是一个最基本的例子,还有很多其他功能可用于并发功能之间的通信。

学习go

Go的学习路线将取决于您的编程背景。具有C背景的开发人员会发现很多类似的语法。如果您学习的是Web编程开发背景,那可能对你来说是一个更难的开始。

Go的开发人员的目标是创建一种语言,它结合了诸如Ruby和JavaScript的等现代解释语言的简单性,也融合了如C语言等传统语言的可靠性。如果您不熟悉静态类型和并发基于线程的概念,这个可成为你学习的一个不错的路线。这些变化会让你更快去了解编程的新路线。

学习资源

以下是一些很好的资源:

如果这些还是满足不了你,来看GO一个全面的学习资源列表

走得更远

当然,这个语言还有更多的东西可以在本文中介绍,我们来看看一些更重要的功能。

模板

如果没有创建WEB页面的功能,那就不是一个完整的现代语言,,允许分离应用程序逻辑和布局。Go的html /模板包是标准库的一部分,允许分离应用程序逻辑和布局。作为HTML和Handlebars的混合,如果您使用过模版,就会发现这个使用方法很简单了,例如:

代码语言:javascript
复制
<h1>{{.Title}}</h1>

<p>{{printf "%s" .Body}}</p>

构架

当一种新语言变得活跃,人们需要为它创建框架以减少重复和样板代码。大多数Go框架都是针对Web应用程序的,包括应用程序生成器,路由,MVC和ORM支持等功能。框架有:

移动端

我打算在另外一篇文章中进一步讨论这个话题,现在Go已经被移植到Android和iOS上。Android的支持有可能为未来从Java的转移为go奠定基础,但这是个人纯粹是猜测。

结论

与其他编程语言相比,Go是一个新的竞争者。通常,这会导致不成熟产品的不当宣传。由于这种语言的创造者们做出了细致而明智的选择,所以我们要继续宣传,并始终如一地履行诺言。

Go并不适合你的每一个应用程序,而且对许多项目来说都是浪费资源。但是,如果我在这篇文章中提到的内容吸引你,那么开整吧!

对不起,忍不住这个双关语!如果你使用Go,你的经验是什么?

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GO的发展
  • 谁在使用Go?
  • Go的特点
    • 简约设计
      • 静态类型
        • 垃圾回收
          • 编译
            • 大型标准库
              • 并发
              • 学习go
                • 学习资源
                • 走得更远
                  • 模板
                    • 构架
                      • 移动端
                      • 结论
                      相关产品与服务
                      云服务器
                      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档