Go语言性能好、语法简单、开发效率高.doc

上传人:scccc 文档编号:12259854 上传时间:2021-12-02 格式:DOC 页数:4 大小:24KB
返回 下载 相关 举报
Go语言性能好、语法简单、开发效率高.doc_第1页
第1页 / 共4页
Go语言性能好、语法简单、开发效率高.doc_第2页
第2页 / 共4页
Go语言性能好、语法简单、开发效率高.doc_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Go语言性能好、语法简单、开发效率高.doc》由会员分享,可在线阅读,更多相关《Go语言性能好、语法简单、开发效率高.doc(4页珍藏版)》请在三一文库上搜索。

1、Go 语言给我的第三个惊喜,是 interface 。Go 语言的 interface ,并非是你在 Java和 C#中看到的 interface ,尽管看起来有点像。 Go 语言的 interface 是非侵入式的接口,具体表现在实现一个接口不需要显式地进行声明。不 过,让我意外的不是 Go语言的非侵入式接口,非侵入式接口只是我接受Go语言的基础。在接口(或契约)的表达上,我一直认为Java和 C#这些主流的静态类型语言都走错了方向。 C+的模板尽管机制复杂,但是走在了正确的方向上。C+0x(后来的 C+11)呼声很高的 concept 提案被否,着实让不少人伤了心。但 Go 语言的 int

2、erface 远不是非侵入式接口那么简单,它是 Go 语言类型系统的纲,这表现在:1只要某个类型实现了接口要的方法,那么我们说该类型实现了此接口。该类型的对象可赋值给该接口。2作为 1的推论,任何 Go语言的内置对象都可以赋值给空接口interface 。3支持接口查询。如果你曾经是 Windows 程序员,你会发现 COM 思想在 Go语言中通过 interface 优雅呈现。并且 Go 语言吸收了其中最精华部分,而 COM 中对象生命周期管理 的负担,却因为 Go 语言基于 GC(垃圾回收机制)方式的内存管理而不复存在。Go 语言给我的第四个惊喜,是极度简化但完备的“面向对象编程(OOP)

3、”方法。Go 语言废弃大量的 OOP特性,如继承、构造 /析构函数、虚函数、函数重载、默认参数等,简化的符号访问权限控制、将隐藏的 this指针改为显式定义的 receiver 对象。 Go语言 让我看到了 OOP 编程核心价值原来如此简单只是多数人都无法看透。Go 语言带给我的第五个惊喜,是它的错误处理规范。Go 语言引入了内置的 error 类型及 defer 关键字来编写异常安全代码,让人拍案叫绝。下面这个例子,我在多个场合都提过。f, err := os.Open(file)if err != nil . / error processingreturndeferf.Close().

4、/ process file dataGo 语言带给我的第六个惊喜,是它功能的内聚。一个最典型的案例是 Go语言的组合功能。对于多数语言来说,组合只是形成复合类型的基本手段,这一点只要想想C语言的 struct 就清楚了。但 Go 语言引入了匿名组合的概念,它让其他语言原本需要引入继承这一新概念来完成事情,统一又到了组合这样的一个基础上。在 C+中,你需要这样定义一个派生类。class Foo : public Base ;在 Go 语言中你只要type Foo struct Base更有甚者, Go 语言的匿名组合允许组合一个指针。type Foo struct *Base这个功能可以实现

5、C+中一个无比晦涩难懂的特性,叫“虚拟继承”。但同样的问题,换从组合角度来表达,直达问题的本质,清晰易懂。Go 语言带给我的第七个惊喜,是消除了堆与栈的边界。在 Go语言之前,程序员是清楚地知道哪些变量在栈上,哪些变量在堆上。堆与栈是基于现代计算机系统的基础工作模型上形成的概念,Go 语言屏蔽了变量定义在堆还是栈上这样的物理结构,相当于封装了一个新的计算机工作模型。这一点看似与Go语言显式表达的设计哲学不太一致,但我个人认为这是一项了不起的工作,而且与Go 语言的显式表达并不矛盾。 Go 语言强调的是对开发者的程序逻辑(语义)的显式表达,而非对计算机硬件结构的显示表达。对计算机硬件结构的高度抽

6、象,将更有助于 Go语言适应未来计算机 硬件发展的变化。Go 语言带给我的第八个惊喜,是 Go 语言对 C 语言的支持。Go可以这么说, Go 语言是除了 Objective-C、C+这两门以兼容 C为基础目标的语言之外的所有语言中,对C语言支持最友善的一个。什么语言可以直接嵌入C代码?没有,除了语言。什么语言可以无缝调用 C函数?没有,除了 Go 语言。对 C语言的完美支持,是 Go 语言快速崛起的关键支撑。还有比 C语言更让人觊觎的社区财富么?那是一个取之不尽 的金矿。总而言之, Go语言是一门非常具变革性的语言。尽管这四十多年来(从 1970年 C语言诞生开始算起)出现的语言非常之多,各

7、有各的特色,让人眼花缭乱。但是我个人固执地 认为,谈得上突破了 C语言思想,将编程理念提高到一个新高度的,仅有Go 语言而已。Go 语言很简单,但是具备极强的表现力。从目前的状态来说, Go 语言主要关注服务器领域的开发,但这不会是 Go 语言的完整使命。我们说 Go 语言适合服务端开发,仅仅是因为它的标准库支持方面,目前是向服务端开发倾斜: 网络库(包括 socket 、 http 、 rpc 等) 编码库(包括 json 、 xml 、 gob 等) 加密库(各种加密算法、摘要算法,极其全面) Web (包括 template 、 html 支持)而作为桌面开发的常规组件: GDI和 UI 系统与事件处理,基本没有涉及。尽管 Go还很年轻, Go语言 1.0 版本在 20XX年3月底发布,到现在才 1年多,然而 Go语言已经得到了非常普遍的认同。在国外,有人甚至提出“ Go语言将制霸云计算领域”。 在国内,几乎所有你听到过名字的大公司(腾讯、阿里巴巴、京东、360、网易、新浪、金山、豆瓣等等),都有团队对Go 做服务端开发进行了小范围的实践。这是不能不说是一个奇迹。Go Web 编程这样一本有非常强的实践背景的图书出版了,这绝对是雪中送炭。与之相反的是,因为年轻, Go 语言的资料,尤其是中文资料极度匮乏。在这样的背景下,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1