GO语言有什么特点?GO语言简介

Admin 2022-01-08 群英行业资讯

使用Go语言编写游戏服务器也已经一个多月了,也能清楚地感觉到二者的不同。本文只是想具体谈谈其中的差别。自然,为了理解这些差异,我们首先对Go语言本身做一个简单的介绍。

PS:这里只以SLG手游为例。

1.Go语言的特征。

与其它语言如Java等相比,Go语言算得上是一种非常年轻的语言。2007年,RobertGriesemer,RobPike和KenThompson开发了Go语言。正式在2009年推出。

Go语言的设计思想围绕着简明扼要这两个词,认为少就是多。若您熟悉Java,将其与Go相比较,以Java语法命名,就能清楚地感受到这种感觉。

可以将Go的特征简单地归纳为以下几点。

1.1静态类型和编译类型。

第一,Go是静态类型,静态类型是编译时就知道每个变量的类型,从中受益,在编译阶段可以发现许多问题。对于动态语言,比如JavaScript,在运行时不会发现某些问题。

Go是一种编译类型的语言,看到编译型大家可能会想到另一个单词的解释式。从字面上理解二者的区别其实已经可以看出了,我想举个简单的例子来类比。

编者型去餐厅吃饭,点完菜后,饭店就会等所有菜做好再上。

解释型到餐厅吃饭,点完菜后,陆陆续到一边吃。

2个平台。

如名称所示,您编写的Go源代码可以在所有系统中运行。

实际上,这一点很好理解,比如Java的口号是"Writeonce,runanywhere"。众所周知,Java是一种编译式语言,但Java在编译时生成的字节码,它独立于当前操作系统,独立于CPU。

这些字节码必须依赖于Java虚拟机来运行,并且虚拟机会会屏蔽操作系统和CPU之间的差别。对编程人员来说,这一过程实际上没有什么感觉。对于Java而言,该语言的跨平台本身并不意味着代码能够跨平台。

Go的跨平台在某种程度上说,和Java类型一样,我们需要安装Go,对应于当前操作系统的版本。所编译的可执行文件因操作系统而异。

1.3自动收集垃圾。

和JVM一样,Go在运行时的内存管理(GC)是由Go语言本身管理的,不需要程序员的参与,但我们可以介入。

1.4本地并发编程。

何谓原始?众所周知,Java要想实现并发性,就必须有外部的类库支持(Thread),而且Go不需要从外部引入任何其他依赖。对关键字go进行支持。Java内部通过共享内存进行通信,熟悉Go的人都应该注意到这样一句话:“不通过共享内存通信,而是通过通信共享内存。”

1.5完善建设工具。

一系列过程,包括获取、编译、测试、安装、运行和分析,都有它自己的内置工具。举例来说,获取一个可以使用goget命令下载更新指定的包,并编译并安装它们,你可以使用gobuild编译源代码,用gorun命令运行Go的程序,用gofmt来快速地格式化代码,统一代码风格。

1.6多模式编程。

当前主流的编程范式包括命令式编程、函数式编程以及我们最熟悉的面向对象编程。当编写Go的代码时,我们可能会选择使用面向对象的方法,或者采用函数式编程的思想,它们互相结合,互相补充。

举例来说,在Go中也可以用一个接口来描述行为,或者使用纯函数以避免副作用。所以,多范例编程意味着该语言支持多种编程范例。

1.7代码风格非常统一。

通过Go内建的工具gofmt,可以快速地将代码格式化为一种官方统一的标准,从而实现代码风格统一。即使使用golangci-lint检测语法与内置标准语法之间是否存在冲突,也可以将该检测工具挂到git的挂钩上,从而实现了代码风格的统一。

1.8活跃社区。

此外,Go的一个重要特色就是,国内Go社区非常活跃,这对Go在国内的流行起到了很大作用。

2.利用Go的优势。

首先,关于Go语言,我觉得Go在这一块服务器上有很大的优势。之后,如果存在高并发的应用场景,则该服务很可能是用Go编写的。不知大家是否发现,摩尔定律正在失效。在最近的十年里,硬件的原始处理能力并未得到很大提高。很明显,一味增加晶体管的数量并非解决问题的最佳途径。

NASA在不久之前就发表了一篇文章,后来又迅速删除,揭示出Google很有可能实现了量子霸权,通俗地讲,它具有超越所有传统电脑的计算能力。为了提高性能,厂商们都在为处理器增加更多的内核。为了提高性能,增加更多的晶体管。

正如我们所熟知的Java一样,Java本身支持多线程,但在Java中使用多线程编程代码也会更昂贵。用Java创建一个新线程大约需要消耗大约1M的内存。假设您确实需要支持运行数千个线程,那么服务很可能只是OOM才能运行。除内存消耗外,还存在一些问题,比如支持多线程带来的并发和死锁。

在Go中,使用协程替代线程。同时,一个协同程序使用的内存比线程要少很多倍。相同的物理设备限制,您可能只能启动数千个线程,而协同程序可以启动数百万个。另外,不同的Goroutine也能通过通信来安全地通信。

标签: GO语言

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部