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详解

相关推荐
Monly216 分钟前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat
boligongzhu7 分钟前
DALSA工业相机SDK二次开发(图像采集及保存)C#版
开发语言·c#·dalsa
Eric.Lee20217 分钟前
moviepy将图片序列制作成视频并加载字幕 - python 实现
开发语言·python·音视频·moviepy·字幕视频合成·图像制作为视频
goTsHgo9 分钟前
在 Spring Boot 的 MVC 框架中 路径匹配的实现 详解
spring boot·后端·mvc
7yewh9 分钟前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
waicsdn_haha21 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
_WndProc23 分钟前
C++ 日志输出
开发语言·c++·算法
Q_192849990631 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
qq_4335545432 分钟前
C++ 面向对象编程:+号运算符重载,左移运算符重载
开发语言·c++
良许Linux36 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网