开篇:为什么学习 Go 语言

news2024/12/27 13:51:11

简介

Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算、微服务、分布式的发展而迅速崛起,跻身主流编程语言之列,和 Java 类似,它是一门静态的、强类型的、编译型编程语言,为并发而生,所以天生适用于并发编程(网络编程)。

目前 Go 语言支持 Windows、Linux 等多个平台,也可以直接在 Android 和 iOS 等移动端执行,从业务角度来看,Go 语言在云计算、微服务、大数据、区块链、物联网、人工智能等领域都有广泛的应用。所以当下学习正当时。

与其他语言的对比

C/C++

Go 设计的初衷是替代 C,所以二者有很多相似之处,但 Go 做的更多:

  • 提供了自动管理线程和垃圾回收的运行时,在 C/C++ 中,需要自行管理线程和内存
  • 更快的编译速度

因此,相对 C/C++,Go 开发效率更高。

适用场景不同:

  • C/C++ 可用于高性能嵌入式系统、大型云应用以及桌面程序开发
  • Go 适用于系统和云平台开发

Go 不适用于高性能嵌入式系统,因为嵌入式系统资源有限,而 Go 运行时调度线程和垃圾回收需要额外的开销。至今没有提供 GUI SDK,所以也不适用于桌面程序开发。

Java

Java 程序编译之后需要安装额外的 Java runtime 运行,Java 程序的可移植性依赖 Java runtime,Go 不需要,Go 运行时已经包含在这个编译的二进制文件中了,这体现在部署上的区别就是需要在服务器安装 Java runtime,而 Go 只需要部署单文件即可。

另外就是程序具体执行的时候,Go 被编译成二进制文件被所在操作系统执行,而 Java 通常是在包含了 JIT 编译器的 JVM 中执行,JIT 会对代码进行优化。

Python/PHP

Python/PHP 都是动态语言,而 Go 是静态语言,会做类型检查,可靠性更高。

开发 Web 应用时,Python/PHP 通常躲在 Nginx/Apache 后面作为后台进程,Go 则提供了内置的 Web 服务器,完全可以直接在生产环境使用。

Python/PHP 之所以要借助额外的 Web 服务器是因为对并发请求的处理,Python 有一个全局锁同时只允许运行一个线程,PHP 本身就没有多线程多进程机制,一次请求从头到位都是一个独立的进程,为了让基于 Python/PHP 的 Web 应用支持并发请求,必须借助外部 Web 服务器。

而 Go 内置的 Web 服务器充分利用了 goroutine,对并发连接有很好的支持。此外,由于协程的本质是在在同一个进程中调度不同线程,所以还支持共享资源。

另外就是 Python/PHP 作为动态语言,性能不如 Go,如果要提升 Python/PHP 性能,必须通过 C 语言编写扩展,复杂度和学习成本太高。

JavaScript

这里的 JavaScript,主要是 Node.js。

JavaScript 是单线程模型,尽管异步 IO 机制可以使用不同的线程,主程序还是以单线程模式运行的,主程序代码耗时会阻塞其他代码的执行。

而 Go 语言的多线程模型可以通过运行时管理调度协程在多个处理器的不同线程中运行,可以充分利用系统硬件。

Node.js 使用 Google Chrome 的 V8 引擎,其中包含了带有 JIT 编译器的虚拟机,可以对 JavaScript 代码进行优化来提升性能,而 Go 代码直接被编译成机器码执行,没有类似的东西,也无此必要。

注:以上对比内容整理自《Go In Practice》这本书。

学习路线图

附 Go 语言学习路线图如下:

 

以及基础知识图谱:

当然,在学习过程中,官方文档 也是不可或缺的伴手工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高等数学笔记(上下)

目录 不定积分定积分微分方程线性微分方程解的结构常系数齐次线性微分方程常系数齐次线性微分方程特解的求法 计算机解法 不定积分 第一类换元积分法:灵感来自于复合函数的求导,利用中间变量替换得到复合函数的积分法:设 f ( u ) f(u) f(u)具…

【Redis7】Redis7 事务管道发布订阅

【大家好,我是爱干饭的猿,本文重点介绍Redis7 事务、管道和发布订阅。 后续会继续分享Redis7和其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】 上一篇文章:《【Redis7】Redis7 持…

Qt扫盲-QXYSeries理论总结

QXYSeries理论总结 一、概述二、常用函数介绍1. 维护点2. 绘图相关3. 绘制标签 三、信号说明1. Point 增删相关2. Point 鼠标相关3. 图变化相关 一、概述 QXYSeries 类是折线图、曲线图、散点图的基类。这个类其实就是维护的是图线的相关信息,就比如是这个线条的颜…

5、cmake的简单认识及CMakeLists.txt的编写语法

文章目录 1、cmake是什么(1)cmake的两大功能 2、CMakeLists.txt常用命令(即如何编写CMakeLists.txt文件)(1)cmake常见预定义1)常见的预定义变量2)系统信息预定义变量3)开…

开发者笑疯了! LLaMa惊天泄露引爆ChatGPT平替狂潮,开源LLM领域变天

来源: 新智源 微信号:AI-era Meta的LLaMA模型开源,让文本大模型迎来了Stable Diffustion时刻。谁都没想 谁能想到,一次意外的LLaMA泄漏,竟点燃了开源LLM领域最大的创新火花。 一系列表现出色的ChatGPT开源替代品——「羊驼家族」…

Linux系统网络传输之端口详解

Linux系统网络传输之端口详解 1、端口的概念2、安装namp3、查看端口占用情况4、安装net-tools5、查看指定端口占用情况 1、端口的概念 计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。通过端口可以锁定计算机上具体的程序&#xf…

《花雕学AI》深度测试ChatGPT国内镜像站:超简单提示词的猫娘角色扮演,真的好神奇啊!

偶然看过一篇讲解如何使用ChatGPT调教猫娘的文章,有六个步骤,许许多多的调教提示语,让我感觉这是一件非常复杂与专业的事情。今天有空,于是就想先从简单的开始尝试一下。我使用了最简单的提示词:”ChatGPT角色扮演猫娘…

分布式事务Seata实践入门

1 前言 现在应用基本上都是分布式部署,那么针对分布式事务问题,也有对应的解决方案。经过简单的调研,最后选择了阿里的 Seata 组件,来实现分布式事务。 Seata是2019年1月份,蚂蚁金服和阿里巴巴共同开源的分布式事务解…

(TinkSystem SR650)安装服务器操作系统(Windows Server 2022)步骤和相关概念

(TinkSystem SR650)安装服务器操作系统(Windows Server 2022)步骤和相关概念 服务器操作系统安装步骤 记录一下服务器操作系统安装过程,虽然简单但还是有一些坑需要注意,本次使用的是联想服务器ThinkSyst…

VS2019中Ctrl+左键不起作用和控制台不驻留(cmd窗口闪退)

1、关于Ctrl左键不起作用 解决:在线装个插件就行。 工具>>扩展和更新 联机>>VS库>>所搜插件“GO TO Definition” 安装,重启VS即可。 2、关于控制台不驻留 当然这个问题解决方案有很多,这个是首选吧

[Java·算法·中等]LeetCode105. 从前序与中序遍历序列构造二叉树

每天一题,防止痴呆 前言题目示例分析思路1题解1分析思路2题解2 👉️ 力扣原文 前言 二叉树前序遍历的顺序为: 先遍历根节点; 随后递归地遍历左子树; 最后递归地遍历右子树。 二叉树中序遍历的顺序为: 先递…

HCIP-6.9BGP路由反射器原理与配置

路由反射器原理与配置 1、路由反射器概念1.1、路由反射器原理:1.2、多集群路由反射器1.3、备份路由反射器2、路由反射器配置3、路由反射器防环机制 1、路由反射器概念 IBGP的水平分割,IBGP 1只能update一跳,就是说在IBGP 2 设备收到IBGP 1设…

【RocketMQ】事务的实现原理

事务的使用 RocketMQ事务的使用场景 单体架构下的事务 在单体系统的开发过程中,假如某个场景下需要对数据库的多张表进行操作,为了保证数据的一致性,一般会使用事务,将所有的操作全部提交或者在出错的时候全部回滚。以创建订单…

12-RabbitMQ

一 RabbitMQ概念 1 MQ 消息队列 MQ全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于系统之间的异步通信。 同步通信相当于两个人当面对话,你一言我一语。必须及时回复 异步通信相当于通过第三方转述对…

ObjectBox一种基于中心点的无锚点目标检测方法

ObjectBox: From Centers to Boxes for Anchor-Free Object Detection 论文地址:https://arxiv.org/pdf/2207.06985.pdf 官方代码:https://github.com/MohsenZand/ObjectBox 基于中心点的无锚点目标检测方法是一种目标检测方法,其思路是将目…

DJ编曲用什么软件,DJ编曲教需要哪些步骤

随着现在人们的生活水平不断提高,我们的精神生活也越来越丰富,对于现在的年轻人来说,DJ舞曲是一个较受欢迎的领域,有许多年轻人对DJ这个职业感兴趣,想要深入了解DJ编曲这份工作,那么今天我们就来说一说DJ编…

300元买什么蓝牙耳机性价比高?300左右性价比高的蓝牙耳机推荐

TWS耳机已经成了很多人生活的必需品,如今的耳机在设计、功能、体验等方面都非常完善,拥有一副TWS耳机似乎已经成为时尚的标志,尤其是年轻群体,耳机既是听歌、娱乐的主力设备,也是穿搭风格、个性的体现,下面…

JDBC事务 Hibernate事务 EJB事务详解

🏆今日学习目标: 🍀JDBC事务 Hibernate事务 EJB事务详解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你…

【学习笔记】Integral Human Pose Regression

【学习资料】一文总结Integral Pose Regression方法的方方面面 - 知乎(总结的很到位,一定要去看) 1.两种基本方法的对比 1.解码方式 softmax和argmax的区别: 由于深度神经网络中的下采样步骤,热图的分辨率低于输入…

如何在电脑本地下载镜像重装系统

现在网上随处可以下载操作系统,下载下来的是镜像系统,很多朋友都不知道电脑镜像重装系统是什么意思,怎么用镜像重装系统,今天小编就给大家带来了电脑镜像重装系统是什么意思的相关解答,一起往下看。 电脑镜像重装系统是…