go语言的理解,看这一篇就够了

1.来源

Go语言是谷歌2009年发布的第二款开源编程语言

2.谷歌为什么要创建Go语言

  • 计算机硬件技术更新频繁,  性能提高很快,默目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能
  • 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个简洁而高效的编程语言.[现有语言:1.风格不统一 2.计算能力不够 3.处理大并发不够好]
  • 企业运行维护很多c,c++的项目,c/c++程序运行速度虽然快,但是编译速度慢,目前还存在内存泄漏的一系列问题

针对上面的一系列问题,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程,Go支持面向对象,而且具有真正的闭包(closures)反射 (reflection)等功能,它有很多强大的功能,比如:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算

 3.Go语言的里程碑

2007年,谷歌工程师Ken Thompson、Rob Pike、Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
2009.11.10 ,Google将Go语言以开放源代码的形式向全球发布。
2015年8月19日  ,Go1.5版本发布,本次更新中移除了“最后残余的C代码”,请内存管理方面权威专家Rick Hudson对GC进行重新设计(重要的修正)
2017年2月16日 , Go1.8版本发布
2017年8月24日 , Go1.9版本发布
2018年2月16日 , Go1.10版本发布
2018年8月24日 , Go1.11版本发布
2019年2月25日 , Go1.12版本发布
2019年9月03日 , Go1.13版本发布
2020年2月25日 , Go1.14版本发布
2020年8月11日 , Go1.15版本发布
2021年2月16日 , Go1.16版本发布

2021年8月16日,  Go1.17版本发布

2022年3月15日,  Go1.18版本发布

2022年8月02日,  Go1.19版本发布

2023年2月02日,  Go1.20版本发布

4.Go语言的特点 

Go语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go: Go = C+ Python, 说明Go语言既有C静态语言的运行效率,又能达到Python动态语言的快速开发.并且Go语言除了OOP外,还对近年出现的一些小众的编程哲学思想有所吸收,例如,Go语言接受了函数式编程的一些想法,支持匿名函数闭包,再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程,总体来说,Go语言是一个非常现代化的语言,精小但非常强大,归纳总结如下:

(1).从C语言那里继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针

等,也保留了C语言一样的编译执行方法及弱化的指针.

(2).引入了的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在.

(3).垃圾回收机制,内存自动回收,不需要开发人员管理

(4).天然支持并发

  • 从语言层次支持并发,实现简单
  • goroutine,轻量级线程,可实现大并发处理,高效利用多核
  • 基于CPS并发模型(Communicating Sequential Processes)实现

(5).吸收了管道通信机制,形成Go语言特有的管道channel,通过管道channel,可以实现不同的goroutine之间的相互通信

(6).函数返回多个值

(7).新的创新,比如:切片,延时执行defer

用更简短的总结如下,Go 语言最主要的特性有:

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

5.Go语言的用途

区块链应用

区块链技术简称BT(Blockchain technology)也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录

后端服务器应用(并发)

美团后台流量支撑程序,支撑主站后台流量(排序、推荐、搜索等),提供负载均衡、cache、容错、按条件分流,统计运行指标(qps、latency)等功能 

Go语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言,对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率,它提供了海量并行的支持,很适合游戏服务端的开发,包括游戏服务端通讯逻辑和数据存储等架构

云计算和云服务开发

  • 盛大云CDN(内容分发网络),包括CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统及其他一些小工具等
  • 京东消息推送云服务(京东云),包括京东分布式文件系统,后台服务采用Go语言实现

6.go语言的开发工具以及安装和配置SDK

见[go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK

好了,go语言的简单介绍就到这里了,更多Go语言相关知识:

Go语言基础:[go学习笔记.第二章] 1.go的概述

Gin框架开发:[golang gin框架] 1.Gin环境搭建,程序的热加载,路由GET,POST,PUT,DELETE

Beego框架开发:[Beego]1.Beego简介以及beego环境搭建,bee脚手架的使用,创建,运行项目

Go微服务开发:[golang 微服务] 1.单体式架构以及微服务架构介绍 

流媒体在线直播系统:1.直播的简单介绍以及借助腾讯云直播实现在线直播

docker相关:[Docker]六.Docker自动部署nodejs以及golang项目

k8s相关:[Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI:135-基于卷积神经网络的艺术品瑕疵检测与修复

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

Swiper.js:不识这个轮播图js库,说明你的前端还未入门

hello,我是贝格前端工场,本期给大家带来轮播图的s库:Swiper.js,用这个类库处理轮播图、幻灯片、画廊那是得心应手,非常的easy,欢迎老铁们点赞关注,如有前端定制开发需求可以私信我们。 一、Swip…

tinymce问题处理

Vite构建工具下Tinymce踩坑指南 解决方案是在路劲前面增加/,这个跟上面链接有些区别,区别原因应该是如果路由采用的是createWebHashHistory则应该去掉/,如果是createWebHistory则应该加上/ 页面引用,一种异步加载,一种同步加载&…

[深度学习]yolov9+deepsort+pyqt5实现目标追踪

【YOLOv9DeepSORTPyQt5追踪介绍】 随着人工智能技术的飞速发展,目标追踪在视频监控、自动驾驶等领域的应用日益广泛。其中,YOLOv9作为先进的目标检测算法,结合DeepSORT多目标追踪算法和PyQt5图形界面库,能够为用户提供高效、直观…

【AUTOSAR】--02 AUTOSAR网络管理相关参数

这是AUTOSAR网络管理梳理的第二篇文章,主要讲解AUTOSAR网络管理的相关参数。第一篇链接【01 AUTOSAR网络管理基础】。​ 相关参数有很多,我挑了一些相对重要的参数,分三部分进行讲解: 第一部分:比较常用&#xff0c…

速度提高100倍 - 扩展 RAG 应用程序,以实现数十亿个嵌入,并行计算余弦相似度

原文链接:100x Faster — Scaling Your RAG App for Billions of Embeddings 2024 年 2 月 15 日 RAG应用程序最大的问题之一是它们的计算检索时间。想象一下,你有一个向量数据库,包含一万亿条Embedding向量的记录。当您尝试将用户查询与一…

Python中操作MySQL和SQL Server数据库的基础与实战【第97篇—MySQL数据库】

Python中操作MySQL和SQL Server数据库的基础与实战 在Python中,我们经常需要与各种数据库进行交互,其中MySQL和SQL Server是两个常见的选择。本文将介绍如何使用pymysql和pymssql库进行基本的数据库操作,并通过实际代码示例来展示这些操作。…

eclipse中open Type 、 open type in Hierachy、open Resource的区别

目录 场景: open Type open Resource open type in Hierachy 场景: 在项目中想要研究底层代码,经常要用eclipse看依赖jar包的类,比如spring的源码中AbstractApplicationContext类CTLSHIFTT用的少,经常用的CTLSHIR…

微信小程序 uniapp+vue餐厅美食就餐推荐系统

本论文根据系统的开发流程以及一般论文的结构分为三个部分,第一个部分为摘要、外文翻译、目录;第二个部分为正文;第三个部分为致谢和参考文献。其中正文部分包括: (1)绪论,对课题背景、意义、目…

[rust] 10 project, crate, mod, pub, use: 项目目录层级组织, 概念和实战

文章目录 一 项目目录层级组织概念1.1 cargo new 创建同名 的 Project 和 crate1.2 多 crate 的 package1.3 mod 模块1.3.1 创建嵌套 mod1.3.2 mod 树1.3.3 用路径引用 mod1.3.3.1 使用绝对还是相对? 1.3.4 代码可见性1.3.4.1 pub 关键字1.3.4.2 用 super 引用 mod1.3.4.3 用 …

docker安装flink

docker安装flink 5.1、拉取flink镜像,创建网络 docker pull flink docker network create flink-network5.2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES&…

【全网首发】上周申请的谷歌Gemini 1.5 Pro已通过!百万token的Gemini 1.5 Pro开箱测试(一)

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

C# WPF 桌面应用程序使用 SQlite 数据库

我们在开发 WPF 桌面应用程序时,数据库存的使用是必不可少的,除非你的应用没有数据存储的需求,有了数据存储需求,我们就会面临使用什么样的数据库的选择问题,我的选择方案是,单机版的应用我优先选择 Sqlite…

Mac安装Appium

一、环境依赖 一、JDK环境二、Android-SDK环境(android自动化)三、Homebrew环境四、Nodejs 安装cnpm 五、安装appium六、安装appium-doctor来确认安装环境是否完成七、安装相关依赖 二、重头大戏, 配置wda(WebDriverAgent&#x…

小苯的IDE括号问题(CD) -----牛客小白月赛87(双链表)

C题&#xff1a;C-小苯的IDE括号问题&#xff08;easy&#xff09;_牛客小白月赛87 (nowcoder.com) D题&#xff1a; D-小苯的IDE括号问题&#xff08;hard&#xff09;_牛客小白月赛87 (nowcoder.com) C题代码&#xff1a; #include<bits/stdc.h>using namespace std…

番外篇 | YOLOv5+DeepSort实现行人目标跟踪检测

前言:Hello大家好,我是小哥谈。DeepSort是一种用于目标跟踪的深度学习算法。它结合了目标检测和目标跟踪的技术,能够在视频中准确地跟踪多个目标,并为每个目标分配一个唯一的ID。DeepSort的核心思想是将目标检测和目标跟踪两个任务进行联合训练,以提高跟踪的准确性和稳定性…

Sentinel微服务流量治理组件实战上

目录 分布式系统遇到的问题 解决方案 Sentinel 是什么&#xff1f; Sentinel 工作原理 Sentinel 功能和设计理念 流量控制 熔断降级 Sentinel工作主流程 Sentinel快速开始 Sentinel资源保护的方式 基于API实现 SentinelResource注解实现 Spring Cloud Alibaba整合…

一键生成PDF即刻呈现:轻松创建无忧体验

在信息爆炸的时代&#xff0c;我们每天都在与各种文件、资料打交道。无论是工作中的报告、合同&#xff0c;还是学习中的笔记、论文&#xff0c;如何高效、安全地管理这些珍贵的资料&#xff0c;成为了我们迫切的需求。幸运的是&#xff0c;随着科技的发展&#xff0c;我们不再…

Mysql--索引分类

Mysql--索引分类 1. 索引分类2. 聚集索引&二级索引 1. 索引分类 在MySQL数据库&#xff0c;将索引的具体类型主要分为以下几类&#xff1a;主键索引、唯一索引、常规索引、全文索引。 2. 聚集索引&二级索引 而在在InnoDB存储引擎中&#xff0c;根据索引的存储形式&am…

Mysql运维篇(五) 部署MHA--主机环境配置

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 大佬博文 https://www.cnblogs.com/gomysql/p/3675429.html MySQL 高可用&#xff08;MHA&#x…