背景介绍
Go 是 Google 开发的一种编程语言。 它于 2009 年由 Robert Griesemer、Rob Pike 和 Ken Thompson 作为开源项目发布。 从那时起,Go 语言就被用于开发其他众所周知的技术,如 Docker、Kubernetes 和 Terraform。 尽管 Go 语言在服务器端和云软件中广泛使用,但它是一种常规用途语言,具有丰富的不同用例。
Go 语言表现力强,且简单明了。 它在设计时考虑了惯用语言,这使程序员能够高效地编写高效且可靠的代码。 以 Go 语言编写的程序可以在 Unix 系统上运行,例如 Linux 和 macOS,也可以在 Windows 系统上运行。 Go 语言之所以值得注意,部分原因在于它独特的并发机制,使得编写可同时利用多个内核的程序非常容易。 它主要是一种强化静态类型的语言,这意味着变量类型在编译时是已知的。 不过,它确实具有一些动态类型化功能。
源启
-
计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
-
软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
-
现有编程语言存在:风格不统一、计算能力不够、处理大并发不够好
-
企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列的困扰需要解决。
特点
Go 语言与 C 语言有很多相似之处,它继承了 C 语言语法的许多方面,如控制流语句、基本数据类型、指针和其他元素等。 不过,该语言的语法和语义均超出 C 语言。 它还与 Java、C#、Python 等有相似之处。 一般情况下,Go 语言往往从其他编程语言中借用并调整功能,同时去掉了大部分复杂性。 例如,你可以在 Go 语言中使用一些面向对象的 (OO) 编程功能和设计模式,但并不完全实现整个 OO 范例。
Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发
-
引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
-
垃圾回收机制,内存自动回收,不需开发人员管理 【稍微不注意就会出现内存泄漏】
-
天然并发【重要特点】 从语言层面支持并发,实现简单,goroutine,轻量级线程,可实现大并发处理,高效利用多核。
-
基于CPS并发模型(Communicating Sequential Processes)实现
-
吸收了管道通信机制,形成go语言特有的管道channel,通过管道channe,可以实现不同的goroute之间的相互通信 函数返回多个值(实例代码)
简单来说就是
-
简单、易学习、开源
-
高并发、高效执行
-
内存管理
-
语法简洁、数组安全、编译迅速快、跨平台
Go 原则
下面是 Go 编程语言的基本原理优势:
-
Go 许可证是完全开放源代码的。
-
Go 程序编译为单独的二进制文件,这样更易于共享和分发。
-
Go 支持交叉编译到各种平台和操作系统。
-
Go 语言致力于使语言变得简单,并用更少的代码行执行更多操作。
-
并发是头等概念,使任何函数可以作为轻量级线程运行,而程序员只需少量工作。
-
Go 语言提供自动内存管理,包括垃圾回收。
-
编译和执行速度很快。
-
Go 语言需要使用所有代码,否则会引发错误。
-
有一种官方格式设置可帮助保持项目之间的一致性。
-
Go 语言具有大量全面标准库,并且可以在不使用第三方依赖项的情况下生成多个应用程序。
-
Go 保证语言与以前版本的后向兼容性。
Go 语言用例
-
系统级应用程序
-
Web 应用程序
-
云原生应用程序
-
实用工具和命令行工具
-
分布式系统
-
数据库实现
Go语言主要使用领域有哪些?
Go语言和大多数服务器端编程语言一样,可以进行web相关应用的开发,其应用场景也比较多,比如服务器编程、分布式集群、中间件、网络编程、数据库、云平台等,其实通过这些年的发展来看,其更多的被应用在于游戏、区块链、云计算、人工智能、爬虫等领域.
代表著名项目
容器化领域: Docker、Kubernetes(k8s)、Consul、Traefik、Etcd、Argo等 Web框架:Gin、Beego、Echo、Revel、Goframe、Go-zero、Gorm等 数据库存储:tidb、influxdb等 微服务:go-kit、go-micro、Kitex、kratos、grpc-go等 区块链:以太坊协议(go-ethereum)、endermint、cosmos-sdk等 游戏开发:g3n、leaf、gonet、engo、nano、pitaya等等 其他:Grafana、Raft等