一起学Golang系列(一)Go语言入门:起源、优势和应用场景

简介: Golang 越来越流行,国内的大厂开始全面拥抱 Go 语言,包括阿里巴巴、京东、今日头条、小米、滴滴、七牛云、360等明星公司, 也包括知乎、轻松筹、快手、探探、美图、猎豹移动等等。同时,创业公司也很喜欢 Go 语言,主要因为其入门快、程序库多、运行迅速,很适合快速构建互联网软件产品。

随着互联网的发展,国内的大厂开始全面拥抱 Go 语言,包括阿里巴巴、京东、今日头条、小米、滴滴、七牛云、360等互联网公司。这么多大厂开始使用 Go 语言,可以说, Go语言入门快、程序库多、运行迅速,很适合快速构建互联网软件产品。


当然,Go语言也有其不足之处,与 Java 相比,还很年轻,很多框架、库、包比较少,这也比较正常,毕竟生态还不健全。


综合来讲,Go语言旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、语言设计良好、执行性能好”等优势,目前国内诸多 IT 公司均已采用Go语言开发项目。


一、Go语言简介

Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。


Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。


Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。


因为Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说Go语言是一门混合型的语言。


作为一个开源项目,Go 语言借助开源社区的有生力量达到快速地发展,很多重要的开源项目都是使用Go语言开发的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。


二、Go语言优势

Golang 真的好用吗?它到底有哪些令人着迷的地方呢?带着这些问题,我们一起来看看Go语言到底都有哪些优势:


1.简单易学

Go语言的作者都有C的基因,Go 自然而然也有了 C 的基因,但是 Go 的语法比 C 还简单, 并且几乎支持大多数你在其他语言见过的特性:封装、继承、多态、反射等。


2.丰富的标准库

Go 目前已经内置了大量的库,特别是网络库非常强大前面说了作者是 C的作者,所以 Go 里面也可以直接包含c代码,利用现有的丰富的C库跨平台编译和部署Go 代码可直接编译成机器码,不依赖其他库,部署就是扔一个文件上去就完事了. 并且 Go 代码还可以做到跨平台编译。


3.内置强大的工具

Go 语言里面内置了很多工具链,最好的应该是 gofmt 工具,自动化格式化代码,能够让团队review 变得如此的简单,代码格式一模一样,想不一样都很困难。


4.性能优势

Go 极其地快。其性能与 C 或  C++ 相似。在我们的使用中,Go 一般比 Python 要快 30 倍左右。

语言层面支持并发,

这个就是Go最大的特色,天生的支持并发,可以充分的利用多核,很容易的使用并发。

内置runtime,支持垃圾回收。


三、适用场景

Go 语言提供了海量并行的支持,高度的抽象化和高性能。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。非常适合复杂事件处理(CEP)。

  • 服务器编程,拥有提供了海量并发性能,非常适合游戏服务端,视频服务等。
  • 分布式系统,数据库代理,存储集群等
  • 基础服务,如:日志处理、数据打包、虚拟机处理、文件系统、内存数据库等中间件
  • 云平台,目前国外很多云平台在采用Go开发。


四、Go语言官网

Go语言的官方网站为:https://golang.org ,它提供了完善的参考文档,包括编程语言规范和标准库等诸多权威的帮助信息。同时也包含了如何编写更地道的Go程序的基本教程,还有各种各样的在线文本资源和视频资源。


五、吉祥物

Go语言有一个吉祥物,在会议、文档页面和博文中,大多会包含下图所示的 Go Gopher,这是才华横溢的插画家 Renee French 设计的,她也是 Go 设计者之一 Rob Pike 的妻子。

1-1PPQA9545W.jpg

最后

Go语言入门快、程序库多、运行迅速,很适合快速构建互联网软件产品。目前国内的大厂开始全面拥抱 Go 语言。建议大家学习好好学习Go这门语言。

相关文章
|
13天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
25 7
|
13天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
13天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
90 71
|
12天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
98 67
|
15天前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
86 62
|
17天前
|
并行计算 安全 Go
Go语言中的并发编程:掌握goroutines和channels####
本文深入探讨了Go语言中并发编程的核心概念——goroutine和channel。不同于传统的线程模型,Go通过轻量级的goroutine和通信机制channel,实现了高效的并发处理。我们将从基础概念开始,逐步深入到实际应用案例,揭示如何在Go语言中优雅地实现并发控制和数据同步。 ####
|
13天前
|
存储 Go
go语言中映射
go语言中映射
31 11
|
15天前
|
Go
go语言for遍历映射(map)
go语言for遍历映射(map)
28 12
|
14天前
|
Go 索引
go语言使用索引遍历
go语言使用索引遍历
25 9
|
18天前
|
安全 Serverless Go
Go语言中的并发编程:深入理解与实践####
本文旨在为读者提供一个关于Go语言并发编程的全面指南。我们将从并发的基本概念讲起,逐步深入到Go语言特有的goroutine和channel机制,探讨它们如何简化多线程编程的复杂性。通过实例演示和代码分析,本文将揭示Go语言在处理并发任务时的优势,以及如何在实际项目中高效利用这些特性来提升性能和响应速度。无论你是Go语言的初学者还是有一定经验的开发者,本文都将为你提供有价值的见解和实用的技巧。 ####