专栏首页云计算回归简约——Go语言简介

回归简约——Go语言简介

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,你只需要这样简单的操作:

import "image/gif"

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

import "image"

并发

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

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

    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的混合,如果您使用过模版,就会发现这个使用方法很简单了,例如:

<h1>{{.Title}}</h1>

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

构架

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

移动端

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

结论

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

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

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

原文链接:https://www.sitepoint.com/simple-clutter-free-programming-with-go/

原文作者:Chris Ward

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用于增强数据治理能力与法规遵从性的容器

    审计人员是如何评估当前分散存储基础设施的企业数据的使用情况的?简而言之,这其中困难重重!

    Techeek
  • 如何在Kubernetes群集上安装,配置和部署NGINX

    Kubernetes是一个基于Google Borg的开源容器管理系统。它可以配置为提供高度可用的,水平自动缩放的自动部署。本指南介绍如何在Linode上设置K...

    Techeek
  • 使用Apprenda和R分析应用程序工作负载数据

    在权限范围内运行的访客应用程序的知识是平台即服务(PaaS)可以利用的最重要的数据来源之一。一个PaaS应该知道(译注:原文为know,此处应指可以获取并处理)...

    Techeek
  • 解读Go语言的2020:变革前夜

    在作者去年年底撰写《解读 Go 语言的 2019》的时候,绝没有想到 2020 年将会如此的不平凡。全球范围内的疫情在大大地限制了人们和企业的对外活动之余,还带...

    深度学习与Python
  • Go语言入门——环境准备篇(一)

    Robert Griesemer:曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8

    arcticfox
  • 为什么一定要学Go语言?

    Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

    机智的程序员小熊
  • 【从零开始学习Go语言】三.属于Go的Hello World

    前文学习: 【从零开始学习Go语言】一.初识Go语言 【从零开始学习Go语言】二.Go语言的安装 【从零开始学习Go语言】三.属于Go的Hello Wor...

    一只特立独行的兔先生
  • 为什么Go语言在中国格外的火

    Go语言推出有几年了,似乎不温不火。但是在中国范围内,确实被关注的一塌糊涂。 这是2017年2月份TIOBE出的编程语言排名: ? 在拉勾网上搜索go的职位,结...

    程序员的酒和故事
  • Go语言六周年,2016年初发布Go 1.6

    原文出处: Andrew Gerrand 译文出处:oschina 2009年11月10日,Go 语言作为开源项目正式发布。从那开始,已经有超过 780...

    wangxl
  • 谷歌软件工程师:我为什么喜欢用Go语言?

    Go语言最近几年逐渐获得越来越多的开发者的喜欢。在Go社区前不久刚刚庆祝Go诞生10周年生日之际,谷歌云软件工程师Benjamin Congdon发表个人博客,...

    新智元

扫码关注云+社区

领取腾讯云代金券