go语言的优点

老男孩教育go语言培训是国内首家go语言培训机构,主讲老师是小米架构资深架构师,有多年go开发经验。小编现将go语言优点整理如下,希望能帮到你们
 
1.部署简单
Go 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。这和 Python 有着巨大的区别。由于历史的原因,Python 的部署工具生态相当混乱比如 setuptools, distutils, pip, buildout 的不同适用场合以及兼容性问题。官方 PyPI 源又经常出问题,需要搭建私有镜像,而维护这个镜像又要花费不少时间和精力。
 
2.并发性好
Goroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个 Go 应用也能有效的利用多个 CPU 核,并行执行的性能好。这和 Python 也是天壤之比。多线程和多进程的服务端程序编写起来并不简单,而且由于全局锁 GIL 的原因,多线程的 Python 程序并不能有效利用多核,只能用多进程的方式部署;如果用标准库里的 multiprocessing 包又会对监控和管理造成不少的挑战我们用的 supervisor 管理进程,对 fork 支持不好。部署 Python 应用的时候通常是每个 CPU 核部署一个应用,这会造成不少资源的浪费,比如假设某个 Python 应用启动后需要占用 100MB 内存,而服务器有 32 个 CPU 核,那么留一个核给系统、运行 31 个应用副本
就要浪费 3GB 的内存资源。
 
3.良好的语言设计
 
从学术的角度讲 Go 语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go 的设计是非常优秀的:规范足够简单灵活,有其他语言基础的程序员都能迅速上手。更重要的是 Go 自带完善的工具链,大大提高了团队协作的一致性。比如 gofmt 自动排版 Go 代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题。把编辑器配置成在编辑存
档的时候自动运行 gofmt,这样在编写代码的时候可以随意摆放位置,存档的时候自动变成正确排版的代码。此外还有gofix, govet 等非常有用的工具。
 
4.执行性能好
虽然不如 C 和 Java,但通常比原生 Python 应用还是高一个数量级的,适合编写一些瓶颈业务。内存占用也非常省。
 
本文版权归老男孩教育所有,欢迎转载,转载请注明作者出处。谢谢!
作者:老男孩教育
首发:http://www.oldboyedu.com/XinXi/

时间: 2024-08-06 07:50:39

go语言的优点的相关文章

Go语言的优点(oschina讨论)

Go语言的优点:并发/网络/性能/工具(fmt/pprof/test)/标准库(http/json/log/flags/atomic)/GoogleGo语言垃圾回收器真正致命的缺陷是,会导致整个进程不可预知的间歇性停顿.像某些大型后台服务程序,如游戏服务器.APP容器等,由于占用内存巨大,其内存对象数量极多,GC完成一次回收周期,可能需要数秒甚至更长时间,这段时间内,整个服务进程是阻塞的.停顿的,在外界看来就是服务中断.无响应,再牛逼的并发机制到了这里统统失效.垃圾回收器定期启动,每次启动就导致

浅析如何学好C语言

今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的:是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作.建议大家在心里默念三遍他们的名字,以示仰慕.当然,如果让你们带着现在的知识回到他们的那个时代,那么就没有什么图灵奖了.C语言程序设计是我们的专业基础课,但是C语言本身却是一个非常强大的工具,它是到

编程有哪些语言

编程有哪些语言?各有什么特点? 编程语言 C,C++,JAVA,VB,VC,FoxPro,Delphi,SQL,PHP,ASP,JSP等. 下为引用,介绍的很详细了. 计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类. 电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的.所以人们要控制计算机一定要通过计算机语言向计算机发出命令. 计算机所能识别的语言只有机器语言,即由0和1

面向对象程序设计及语言

面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术到一定阶段后的产物.如今,面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围.如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构,CAD技术.人工智能等领域. 面向对象语言借鉴了20世纪50年代的人工智能语言LISP,引入动态绑定的概念和交互式开发环境的思想.始于20世纪60年代的离散事件模拟语言SIMULA67,引入了类的要领和继承,成型于20世纪70年代的Smalltalk. 面向对象语言发展的两个方

java语言运行机制及运行过程

java语言的特点 1.面向对象     1.1 两个基本概念:类.对象      1.2 三大特性:封装.继承.多态 2.健壮性     吸收了c/c++语言的优点,但是去掉了影响程序健壮性的部分(如指针.内存的申请与释放等),提供了一个相对安全的内存管理和访问机制 3.跨平台性     3.1 通过java语言编写的应用程序在不同的系统平台上都可以运行.           Write once,Run Anywhere      3.2 原理:只要在需要运行java应用程序的操作系统上,先

学C语言--第一天

今天开始决定,开始学习C语言,网上充斥着各种的入门书籍,各种快速学会C语言编程的资料.可我一个在和周围码农接触了4年多的人来说,我清楚的知道,学习最快的方式就是先从看代码入手. 但最基本的还是要先熟悉,大学时期,学过一些C也学过一些C++,不过那仅仅是为了挣学分,什么也没学到而已. C语言的优点: 兼备高级语言与低级语言的优点,属于一种中间语言. 是一种结构化程序设计语言,非常适合结构化程序设计. 有较丰富的数据类型.运算符以及函数供以选用. 直接和内存打交道,使得修改.编辑其他程序与文档变得轻

c语言章节11

本文目录 一.计算机常识 二.程序设计语言发展史 三.C语言简史 四.C语言的特点 五.C语言的作用 六.C语言的版本问题 前面已经给大家介绍了iOS开发相关的一些基础知识,比如学习iOS开发需要什么准备.iOS开发的前景等等.在<开篇>这讲中说过:其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言.iOS开发需要学习的主要程序设计语言有:C语言.C++.Objective-C,其中C++.Objective-C都是以C语言为基础,从C语言衍生出来

C++之语言概述

C++语言是广泛使用的程序设计语言之一,因其特有的优势在计算机应用领域占有重要一席. C语言的发展 20世纪70年代初,贝尔实验室的Dennis Richie 等人在B语言基础上开发出C语言,最初是作为UNIX的开发语言. 20世纪70年代末,随着微型计算机的发展,C语言开始移植到非UNIX环境中,并逐步成为独立的程序设计语言. C语言版本很多,为了让开发出来的代码能够在多种平台上运行,1988年ANSI(美国国家标准协会)对C语言进行了标准化,产生了ANSI C. C语言的特点 既有高级语言的

如果是初学C语言请看完 一些成功人士的心得

转自程先的专栏     今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的:是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作.建议大家在心里默念三遍他们的名字,以示仰慕.当然,如果让你们带着现在的知识回到他们的那个时代,那么就没有什么图灵奖了. C语言程序设计是我们的专业基础课,但是C语言本身却是