1.golang背景、特点介绍

背景介绍

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之间的相互通信 函数返回多个值(实例代码)

简单来说就是

  1. 简单、易学习、开源

  2. 高并发、高效执行

  3. 内存管理

  4. 语法简洁、数组安全、编译迅速快、跨平台

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等

相关推荐
knightkkzboy5 分钟前
15. 《C语言》——【如何动态内存开辟】
c语言·开发语言·算法
legendary_1636 分钟前
小家电Type-C接口PD诱骗芯片 6500
c语言·开发语言
嵌入式的大菜鸟6 分钟前
Linux C语言:多级指针(void指针和const)
c语言·开发语言
续亮~6 分钟前
16、架构-可观测性-事件日志详细解析
java·分布式·后端·架构
Che3rry9 分钟前
C/C++|Pimpl Idiom(Pointer to IMPLementation) 指针实现模式浅析
c语言·开发语言·c++
DBWYX19 分钟前
排列组合板子A(n,m)C(n,m) ; 递推组合数公式 ; 杨辉三角
c语言·开发语言·杨辉三角·组合数
Yuan_o_22 分钟前
数据结构——栈(Stack)详解
java·开发语言·数据结构
~kiss~22 分钟前
go协程的栈
开发语言·后端·golang
codkingo24 分钟前
Go如何在本地引用以及发布并引用自定义工具包
开发语言·后端·golang
不爱敲代码的阿玲26 分钟前
C# —— 算数运算符
开发语言·c#