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

相关推荐
百事老饼干1 分钟前
Java[面试题]-真实面试
java·开发语言·面试
customer088 分钟前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
2402_8575893618 分钟前
SpringBoot框架:作业管理技术新解
java·spring boot·后端
一只爱打拳的程序猿37 分钟前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
杨荧38 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
白子寰1 小时前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
王俊山IT1 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
为将者,自当识天晓地。1 小时前
c++多线程
java·开发语言
小政爱学习!1 小时前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
k09331 小时前
sourceTree回滚版本到某次提交
开发语言·前端·javascript