软件开发新秀之Go语言

幸运草 2020年4月12日18:12:35前端框架评论阅读模式

欢迎大家来到Gopher_Zone,今天要隆重介绍的是编程界的新秀Go,一个有望成为新时代男主角的男人。实事求是哈,自从出道以来,Go语言备受Google公司内部的重视,在开源社区更是受到广大Gopher爱好者的青睐。

至此,大家会感到有些疑惑,为什么Go语言会有望成为新时代的编程界男主角呢?又是什么让它有如此大的魅力呢?接下来,让我们慢慢的走近它,了解它。

简介:

Go语言是谷歌推出的一种静态强类型、编译型、并发型,并具有垃圾回收功能的全新编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧,而Go语言让我体验到了从未有过的开发效率,它是一种抛弃繁杂,重于解决实际问题的实践型编程语言。

优势:

1、学习曲线容易

Go语言语法相对简单,罗布派克(Rob Pike)认为Go与Java类似,对于Java开发者来说,应该能够轻松学会Go。之所以将Go作为一个开源项目发布,目的是让开源社区有机会创建更好的工具来使用该语言,例如 Eclipse IDE中的插件。

2、效率&性能

开发过程中相较于Java和C++呆滞的编译速度,Go的快速编译时间是一个主要的效率优势;Go拥有接近C的运行速率和接近PHP的开发效率。

3、强大的标准库

Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,Go语言的标准库不但能让你访问底层操作系统进行系统编程,还提供了强大的互联网应用编程、网络编程、和并发编程、分布式编程支持。

4、自由高效

组合的思想,非侵入式接口。Go语言可以说是开发效率和运行效率的完美融合,天生的并发编程支持。Go语言支持几乎当前所有的编程范式:过程式编程、面向对象编程、面向接口编程、函数式编程。Gophers可以各取所需,自由组合,总之就是两个字,优秀。

5、并发性&协程与通道

Go 作为一门语言致力于使事情简单化。它并未引入很多新概念,而是聚焦于打造一门简单的语言,以并发编程为例。Goroutines(协程)是Go 面向线程的轻量级方法,而channel(信道)是 Goroutines(协程)之间通信的优先方式。简单对比一下

(1)内存消耗方面:

每个 Goroutine (协程) 默认占用内存远比 Java 、C 的线程少

goroutine:2KB

线程:8MB

(2)线程和Goroutine(协程)切换调度开销方面

线程/Goroutine 切换开销方面,goroutine 远比线程小

线程:模式切换(从用户态切换到内核态)、16个寄存器、PC、SP...等寄存器的刷新

Goroutine :只有三个寄存器的值修改 - PC / SP / DX

6、支持gRPC和Protocol Buffers

Go 语言对 protocol buffers 和 gRPC 有一流的支持。这两个工具能一起友好地工作以构建需要通过 RPC 进行通信的微服务器(microservices),可以更加高效,更加迅速的实现服务端与客户端的通信。

优势介绍,未完待续,在以后的文章中加以补充。

应用领域:

因为Go语言的强大优势,以及待开发的优秀的潜力,在相当多的领域都有它的身影。

1、服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。

2、网络编程,主要是Web应用、API应用。

3、因优秀的并发编程,适合游戏服务端开发。

4、容器领域,比较知名的开源项目Docker、K8s等就是Go语言实现的。

5、区块链领域,分布式数据库开发、这一领域是目前比较流行的。

6、云平台、云计算领域,2018年7月24日,Go 语言团队发布了一个新的开源项目Go Cloud。Go Cloud 是一个可在开放云平台上进行开发的库和工具集,旨在让Go语言成为开发构建可移植云端应用程序的首选语言。

版本简史:

随着版本的不断迭代与优化,性能更加优越,功能更加强大,在Go1.11最新版本中已实现对Go module的支持,逐渐弱化了工作目录GoPath的强制要求。

时间点 版本介绍
2007年 谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型
2009年11月10日 Go语言以开放源代码的方式向全球发布
2011年3月16日 Go语言的第一个稳定(stable)版本r56发布
2013年4月04日 Go语言的第一个Go 1.1beta1测试版发布
2013年5月02日 Go语言的第二个Go 1.1beta2测试版发布
2013年5月07日 Go语言Go 1.1RC2版发布
2013年5月09日 Go语言Go 1.1RC3版发布
2013年5月13日 Go语言Go 1.1正式版发布
2013年9月20日 Go语言Go 1.2RC1版发布
2013年12月1日 Go语言Go 1.2正式版发布
2014年6月18日 Go语言Go 1.3版发布
2014年12月10日 Go语言Go 1.4版发布
2015年8月19日 Go语言Go 1.5版发布,本次更新中移除了”最后残余的C代码”
2016年2月17日 Go语言Go 1.6版发布
2016年8月15日 Go语言Go 1.7版发布
2017年2月17日 Go语言Go 1.8版发布
2017年8月24日 Go语言Go 1.9版发布
2018年2月16日 Go语言Go 1.10版发布
2018年8月25日 Go语言Go1.11 版本正式发布

支持平台:

硬件架构,Go语言设计支持主流的32位的X86平台、同时也支持32位的ARM架构。

操作系统,Go语言在Go1版本上支持Windows, 苹果Mac OS X, Linux等操作系统。

开发工具:

个人推荐GoLand开发IDE,Goland是专门针对Go语言的集成开发环境,目前已成为付费软件,最新版支持Go 1.9,支持类型别名。

优秀编号 优秀特征介绍
1 语法高亮显示
2 片段中内嵌的C语法高亮显示
3 与Go标准一致的项目管理方式
4 gofmt、goimports自动格式化支持
5 代码自动完成、重构
6 大纲显示
7 源代码跳转
8 快速API检索
9 代码表达式信息显示
10 断点调试支持
11 使用Delve进行远程调试
12 支持Docker容器的远程调试
13 参数名称显示
14 编辑器样式风格调整
15 键盘快捷键自定义配置
16 Markdown支持(插件)
17 安装插件实现更多功能
众多优秀功能,自行研究发现

简单示例:

功能:实现两个变量的交换

package main

import "fmt"

func main() {

var (

fNum = 12

sNum = 36

)

fNum,sNum=sNum,fNum

fmt.Println(fNum,sNum)

}

总结:

Go语言实际上是一种改良派,汲取以往语言的精华,摒弃以往语言中的繁杂不使用的糟粕新时代编程语言,它更加着重于解决实际中遇到的问题,更加注重于实践性。相信你在看完本篇文章的介绍后,应该对这位编程界的新秀有了一定程度上的了解。因为篇幅有限,感兴趣的同学,可以在网上冲浪一下,根据需要,汲取自己预期的营养。

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草
Go语言接口规则 前端框架

Go语言接口规则

Go语言接口规则 接口是一个或多个方法签名的集合。任何类型的方法集中只要拥有该接口对应的全部方法签名。就表示它 "实现" 了该接口,无须在该类型上显式声明实现了哪个接口。对应方法,是指有相同名称、参数...
Go语言中处理 HTTP 服务器 前端框架

Go语言中处理 HTTP 服务器

1 概述 包 net/http 提供了HTTP服务器端和客户端的实现。本文说明关于服务器端的部分。 快速开始: package main import (   "log"   "net/http" )...

发表评论