蚊章汇 - Susan Conant
type: channel
link: https://linuxcn.bwsl.wang/author/526/
description: Susan Conant
items: 2017 年 Go 语言编程的五大关注点

2017 年 Go 语言编程的五大关注点
type: item
date: 2017-03-01T01:32:25+08:00
description: 今年像动态插件，Serverless Go 以及 HTTP/2 这些创新对你的开发意味着什么？Go 1.8 刚刚发布，它有几个新功能，包括：HTTP/2 PushHTTP 服务器平滑关闭插件缺省 GOPATH这些新功能的影响力取决于你和开发团队如何使用 Go。 自从 Go 1.0 于 2012 年发布以来，其简单性、并发性和内置支持使其保持普及度不断增长，所以对“Go 擅长什么”的答案一直在增长。这里我会提供一些想法，包括新到来的版本及 Go 世界最近其它吸引我的地方。这不是一个详尽的列表，所以请让我知道你认为在 2017 年 Go 还会发生哪些重要的事。Go 的超级可部署性 + 插件 = 容器、任何东西？1.8 版本已经发布，我已经与其中几个人交谈过添加动态插件会如何影响像容器之类的事物，动态插件是为了加载在编译时不是程序一部分的共享库的代码。 动态插件使容器中的高并发微服务变得更加简单。 你可以轻松地以外部进程的方式加载插件，同时具备在容器中微服务的所有好处：保护你的主进程不会崩溃，并且没有任何东西会搞乱你的内存空间。 对插件的动态支持应该是在 Go 中使用容器的福音。关于专家现场 Go 培训，请注册 Go Beyond the Basics。跨平台支持仍在吸引开发人员在 Go 开源之后的 7 年里，它已被全球采用。Daniel Whitenack 是一名数据科学家和工程师，他为 Jupyter 维护 Go 内核，告诉我最近他在西伯利亚做数据科学和 Go 语言培训，（是的，在西伯利亚！数据科学和 Go - 之后再细讲一下...）并 “很惊讶地看到那里 Go 社区是如此活跃和积极。” 人们继续在项目中采取 Go 的另一个很大的原因是交叉编译，对此，几个 Go 专家解释说这在 Go 1.5 版本中变得更容易了。来自其他语言（如 Python）的开发人员应该发现，在没有 VM 的目标平台上，能够为多个操作系统构建捆绑的、可部署的应用程序是在 Go 中工作的关键。在 1.8 版本中对跨平台的支持，再加上提升了 15% 的编译速度，你就可以看到为什么 Go 是初创公司最喜欢的语言。有兴趣了解 Go 的基础知识吗？查看 Go 基础学习路径 让 O’Reilly 专家来带你开始。Go 解释器在开发中；再见 Read-Eval-Print-Loop有一些聪明的家伙正在做一个 Go 解释器，我一定会持续关注它。如你所知的那样，有几个 Read-Eval-Print-Loop（REPL）的解决方案可以用来评估表达式，以确保代码如你预期的工作，但那些方法通常意味着容忍一些不便，或需要费力从几个方案中找到一个适合你的用例的。有一个健壮、一致的解释器就太好了，一旦我了解到更多消息，我会告诉你们。在开发中使用 Go 复杂特性？观看 O'Reilly 的视频训练 中级 Go 。Go 的 serverless - 会是什么样子？是的，现在围绕 serverless 架构（功能即服务（FaaS））有很多炒作。但有时候也有些捉摸不定的地方，那么关于 Go 的 serverless 发生了什么？我们能在今年看到一个 Go 语言原生支持的 serverless 服务么？AWS Lambda 是最知名的 serverless 提供商，不过 Google 最近也推出了 Google Cloud Functions。这两个 FaaS 解决方案使你可以在无须管理服务器的情况下运行代码，你的代码存储在别人为你管理的服务器集群上，并且仅在触发事件调用它时运行。AWS Lambda 目前支持 JavaScript、Python 和 Java，还可以启动 Go、Ruby 和 bash 进程。 Google Cloud Functions 只支持 JavaScript，但很可能不久将支持 Java 和 Python。许多物联网设备已经使用 serverless 方案，随着 Go 越来越多地被创业公司采用，serverless 似乎是一个可能的增长点，所以我在关注这些 serverless 解决方案中 Go 的开发情况。已经有几个框架可以支持 AWS Lambdas：λ Gordon - 使用 CloudFormation 创建、连接及部署 AWS LambdasApex - 构建、部署及管理 AWS Lambda 函数Sparta - AWS Lambda 微服务的 Go 框架还有一个 AWS Lambda 替代品支持 Go：Iron.io：建立在 Docker 和 Go 之上；语言未知；支持 Golang、Python、Ruby、PHP 和 .NET有关 serverless 架构的更多信息，请观看 Mike Roberts 在旧金山 O'Reilly 软件架构会议上的演讲主题…