有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。
为武都等地区用户提供了全套网页设计制作服务,及武都网站建设行业解决方案。主营业务为网站设计制作、成都网站建设、武都网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。转载
1.1 不允许闭举迟左花括号另起一行
1.2 编译器莫名其妙地给行尾加上分号
1.3 极度强调编译速度,不惜放弃本应提供的功能
1.4 错误处理机制太原始
1.5 垃圾回收器(GC)不完善、有重大缺陷
1.6 禁止未使用变量和多余import
1.7 创建对象的方式太多令人纠结
1.8 对象没有构造函数和析构函数
1.9 defer语句的语义设定不甚合理
1.10 许多语言内置设施不答纯支持用户定义的类型
1.11 没有泛型支持,常见数据类型接口丑陋
1.12 实现接口不需要明确声明轿李
1.13 省掉小括号却省不掉花括号
1.14 编译生成的可执行文件尺寸非常大
1.15 不支持动态加载类库
Golang 的创建是为了实现最大的用户效率和编码效率。已经熟悉 Java 或 PHP 的程序员可以在几周内接受 Go 的培训(许多人最终会更喜欢它)。在本文中,Dewet Diener 探讨了 Golang 的优缺点,以及它的测试驱动开发 (TDD) 如何完美契合。
Golang 由 Google 开发和设计,于 2009 年作为一种综合性编程语言首次出现,旨在最大限度地提高编码效率。创建该语言的目的是修正其他已建立语言的缺陷。尽管 Golang(或简称为“Go”)是一门年轻的语言,但已经积累了大量的开发人员,因此我们想分享为什么在 Curve 我们喜欢 Golang,以及我们如何采用它来实现我们移动银行业务的目标到云端。
Go 是一种精致的编程语言:它支持“所见即所得”的原则,这意味着清晰易读的代码和更少的复杂抽象。该语言本身易于使用且易于训练。尽管如此,作为一个相对较新的生态系统,要找到对 Go 具有广泛预先知识的工程师可能会很棘手。
然而,与其他编程语言不同,Go 的创建是为了最大限度地提高用户效率。因此,具有 Java 或 PHP 背景的开发人员和工程师可以在几周内获得使用 Go 的技能和培训——根据我们的经验,他们中的许多人最终更喜欢它。
在 Curve,我们大力提倡测试驱动开发 (TDD),Go 的框架与这种方法保持一致。通过简单地命名一个文件 foo_test.go 并在该文件中添加结构化测试函数,Go 将快速有效地运行您的单元测试。这一创新功能提高了生产力,因为它可以更加旅键专注于测试驱动的开发和改进的同行评审机会。
Golang 具有出色的生产优化品质,例如内存占用小,这支持其在大型项目中作为构建块的能力,以及开箱即用的与其他架构的轻松交叉编译。由于 Go 代码被编译为单个静态二进制文件,因此它可以轻松进行容器化,并且通过扩展,将 Go 部署到任何高可用性环境(例如 Kubernetes)中几乎是微不足道的。
它提供了一种机制来保护工作负载,通过拥有非常纤薄的生产容器而没有任何无关的依赖项。这使得构建、部署和维护基于 Go 的资产更加直接和安全,并为希望建立或发展者镇乱其微服务战略的公司提供了可靠的选择。
Go 是专门为满足我们快速发展的技术生态系统的需求而创建的。例如,Go 可以满足您构建 API 所需的一切,并将其作为其标准库的一部分。它使用简单,高性能的 http 服务器消除了团队设计新项目时经常发生的一些常见的 探索 和设计瘫痪问题——这对于一些其他流行语言(如 Java 和 Node.js)来说太常见了。
Golang 还通过其内置于语言本身的自动格式化程序巧妙地解决了代码格式化分首档歧。这完全消除了格式争议,进而提高了团队的生产力和注意力。
尽管我是 Go 的拥护者,但它显然也不是没有缺陷。一个争论不休的特性是 Go 没有显式接口,这是许多开发人员习惯的概念。虽然不是有害的,但它可以使选择最适合您的结构的接口成为一项任务。这是因为您不会像在其他流行的编程语言中那样编写 X 实现 Y,但您很快就会接受。
依赖管理也是另一个不属于 Google Golang 开发团队原始设计的功能。开源社区介入并创建了 Glide 和 Dep,最初的努力并没有完全解决问题。从 Go 1.11 开始,添加了对模块的支持,这似乎已成为官方的依赖管理工具。这些挑战并没有削弱 Go 作为一种高效编程语言的独创性,并且它继续为我们提供优于其他编程语言的显着优势。
Golang 吸引了全球敏锐的开发人员的注意,并且围绕它的兴奋继续增长。开源社区因有趣的项目而蓬勃发展;最著名的是 Docker 和 Kubernetes。
正是这种新鲜、有创意但又简单的包装吸引了我们去Go:它是一种令人兴奋的编码语言,可以帮助我们在 Curve 中快速开发以构建更好的产品。
C++适合本地程序的开发。Go语言适合网络程序和本地程序的开发。Go的优点:垃圾回收,语意明确,格式统一。 Go的缺点:效率目前没有C++高,但对于隐销桌面程序而言,效率问题不大,因为硬件已经很快了。c++过顷核于复杂了,加入很多炫技的内容。这些内容脱离了事情的本质。
最明显的就是所谓的面向对象。基于面向对象的工程如果足够大的情况下,会带来很大的耦合度,如果再加上内存管理,多线程等等。项目后期基本上没办法维护和增加功能。
关于c++的语言复杂性,你可以问知乎上的雀携掘任何一位高手。没一个敢说自己精通c++。你也可以去看一下所有的c++编绎器,没有任何一个敢说自己完全实现了c++的标准。不同的编绎器之间实现细节又不同。所以功能再强大没有实用性,就失去了意义,只会制造更多的问题。
golang在近些年被追捧,不管某华,某阿在很多服务器开发上都在使用。
你不用怀疑golang的
优势:部署简单,良好的语言设计,并发性好,性能优良,开发简洁快,标准库芹码祥强大,编译简单
缺点:还存在一些缺陷(例如垃圾回收嫌搏),缺少安全检查,性能方面目前比不过java,第三方库不及java
但作为新兴语种,我们不用担心,背后有谷歌支持和java持平也就是时间上的问题。
而且前面还有某模辩华,某阿顶着不怕。