Go后端开发 -- Golang的语言特性

Go后端开发 – Golang的语言特性

文章目录

  • Go后端开发 -- Golang的语言特性
  • 一、Golang的优势
    • 1.部署极其简单:
    • 2.静态语言
    • 3.语言层面的并发
    • 4.强大的标准库
    • 5.简单易学
    • 6.运行效率对比
  • 二、Golang的适用领域
    • 1.应用领域
    • 2.明星产品
  • 三、Golang的不足


一、Golang的优势

1.部署极其简单:

  • 可直接变异成机器码;
  • 不依赖其他库
  • 直接运行即可部署

通过``可以直接进行编译:
在这里插入图片描述
编译完成的可执行程序是比较大的,因为已经把所有需要的库全部静态编译起来了;
通过ldd指令查看库依赖,发现除了标准的so、libc和pthread库外,不依赖其他的库,可以直接./main执行
在这里插入图片描述

2.静态语言

编译的时候就可以检查出来隐藏的大多数问题;
通过编译的时候就可以知道代码哪里有问题;

3.语言层面的并发

天生支持并发,充分的利用多核;

package mainimport ("fmt""time"
)func goFunc(i int) {fmt.Println("goroutine ", i, " ...")
}func main() {for i := 0; i < 10000; i++ {go goFunc(i) //开启一个并发协程}time.Sleep(time.Second)
}

请添加图片描述

4.强大的标准库

  • runtime系统调度机制
  • 高效的GC垃圾回收
  • 丰富的标准库

5.简单易学

  • 25个关键字
  • 内嵌C语法支持
  • 面向对象特征(封装、继承、多态)
  • 跨平台

在这里插入图片描述

6.运行效率对比

在这里插入图片描述

二、Golang的适用领域

1.应用领域

  • 云计算基础设施领域
    代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。

  • 基础后端软件
    代表项目:tidb、influxdb、cockroachdb等。

  • 微服务
    代表项目:go-kit、micro、monzo bank的typhon、bilibili等。

  • 互联网基础设施
    代表项目:以太坊、hyperledger等。

2.明星产品

在这里插入图片描述

三、Golang的不足

  • 包管理,大部分包都在github上
    所使用的大部分第三方库,都是托管在github上的;
    对于代码稳定性比较有风险;
  • 所有Excepiton都用Error来处理
    不存在try...catch...语法
  • 对C的降级处理,并非无缝,没有C降级到asm汇编那么完美(序列化问题)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[管理者与领导者-129]:很多人对高情商的误解,工程师要扩展自己的情商吗?工程师如何扩展自己的情商?

目录 前言&#xff1a; 一、什么是高情商&#xff1f; 1.1 什么是高情商 1.2 情商的五大能力 1.3 高情商的层次 1.4 对高情商的误解? 二、工程师需要发展自己的高情商吗&#xff1f; 三、工程师如何扩展自己的情商&#xff1f; 四、什么样的“高情商”的管理者令人讨…

基于Springboot的留守儿童爱心网站(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的留守儿童爱心网站(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

凸优化 2:如何判定凸函数?

凸优化 2&#xff1a;如何判定凸函数&#xff1f; 如何判断一个目标函数是凸函数&#xff1f;如果是凸函数&#xff0c;那ta的定义域是凸集合 一个函数求俩次梯度&#xff0c;大于等于0&#xff0c;那这个函数就是一个凸函数在同样条件下&#xff0c;怎么设计为凸函数模型&…

4G网络架构、网元接口、网元功能介绍

一、4G架构 1、非漫游架构 3GPP接入的非漫游结构 3GPP接入的非漫游体系结构。单网关配置选项 同样在该配置选项中&#xff0c;S5可以在非并置的服务网关和PDN网关之间使用。 2、漫游架构 用于3GPP接入的漫游架构 2G/3G接入的附加接口/参考点 二、4G网元接口介绍 S1-MME&…

Leetcode算法系列| 4. 寻找两个正序数组的中位数

目录 1.题目2.题解C# 解法一&#xff1a;合并List根据长度找中位数C# 解法二&#xff1a;归并排序后根据长度找中位数C# 解法三&#xff1a;方法二的优化&#xff0c;不真实添加到listC# 解法四&#xff1a;第k小数C# 解法五&#xff1a;从中位数的概念定义入手 1.题目 给定两个…

【JMeter】JMeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量&#xff0c;相比于并发模式&#xff0c;更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS&#xff0c;我们可以把他理解为我们的TPS&#xff0c;我们就不…

行转列(大全)

1、统计行数&#xff0c;转成列显示。 CREATE TABLE shop_20231223 (name_ed varchar(255) DEFAULT NULL,time_ed varchar(255) DEFAULT NULL,day_ed int DEFAULT NULL ) select sum(case when day_ed 9 then 1 else 0 end) month_9, sum(case when day_ed 10 then 1 else …

指针的概念

在C语言中&#xff0c;内存单元的地址称为指针&#xff0c;专门用来存放地址的变量&#xff0c;有时对地址&#xff0c;指针和指针变量不区分&#xff0c;统称指针。&#xff08;地址指针&#xff09; 一般情况下&#xff0c;最前面的存储类型通常会省略 指针在说明的同时&…

单调栈分类、封装和总结

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 通过枚举最小&#xff08;最大&#xff09;值不重复、不遗漏枚举所有子数组 C算法&#xff1a;美丽塔O(n)解法单调栈左右寻找第一个小于maxHeight[i]的left,right&#xff0c;[left,right]直接的高度都是maxHeight[i] 可以…

Java项目-瑞吉外卖项目优化Day3

前后端分离开发 Yapi 是一个接口结合了接口测试、接口管理的管理平台&#xff0c;需要配置比较麻烦。看弹幕说用apifox更好用。可以将接口文档导出导入。 Swagger 注意下面的地址前面要有/。 效果&#xff1a; 可以在这里实现接口的测试&#xff0c;也可以导出文档等等。一般…

node.js——如何安装并管理node.js多个版本进行开发,看这一篇文章就够了!!!

安装并管理node多个版本 一、nvm介绍二、安装三、常用操作命令 总结 本文介绍了如何安装并管理node多个版本进行开发。 一、nvm介绍 nvm是Node.js的版本管理器&#xff0c;安装并使用&#xff0c;可以让我们切换不同的Node.js版本进行开发。 二、安装 下载对应系统的nvm安装…

图片转excel:“保留数字格式”在什么场景下该勾

保留数字格式是什么意思呢&#xff1f;顾名思义&#xff0c;就是将转出来的数字保留为数字格式&#xff0c;而不是文本格式。我们知道&#xff0c;OCR程序将图片上的文字识别为电脑可编辑的文字后&#xff0c;如果导入到excel不加处理&#xff0c;则单个数字过长的文字就会被ex…