golang是非常年轻的一门语言,主要目标是兼具python等动态语言的开发速度和c/c++ 等编译型语言的性能与安全性。go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等,go语言广泛应用于web 应用、api应用、下载应用等,除此之外,go语言还适用于内存数据库和云平台领域,目前国外很多云平台都是采用go开发。
本教程操作环境:windows10系统、golang1.20.1版本、dell g3电脑。
golang是什么?
go语言简介
go语言(或 golang)起源于 2007 年,并在 2009 年正式对外发布。go 是非常年轻的一门语言,它的主要目标是“兼具 python 等动态语言的开发速度和 c/c++ 等编译型语言的性能与安全性”。
go语言是编程语言设计的又一次尝试,是对类c语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。
go语言的推出,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、语言设计良好、执行性能好”等优势,目前国内诸多 it 公司均已采用go语言开发项目。
go语言有时候被描述为“c 类似语言”,或者是“21 世纪的c语言”。go 从c语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有c语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。
因为go语言没有类和继承的概念,所以它和 java 或 c++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说go语言是一门混合型的语言。
此外,很多重要的开源项目都是使用go语言开发的,其中包括 docker、go-ethereum、thrraform 和 kubernetes。
我们为什么选择go语言
选择go语言的原因可能会有很多,关于go语言的特性、优势等,我们在之前的文档中也已经介绍了很多了。但是最主要的原因,应该是基于以下两方面的考虑:
执行性能
毕竟是类c的执行速度,对于一些服务来说,性能是极其重要的一环,事关系统的吞吐、访问的延迟,进而会影响用户的体验,go语言通过协程可以方便的实现并行处理,达到处理效率的最大化 ,提升系统的吞吐能力。
开发效率
go语言使用起来简单、代码描述效率高、编码规范统一、上手快。 通过少量的代码,即可实现框架的标准化,能快速的构建各种通用组件和公共类库,进一步提升开发效率,实现特定场景下的功能量产。
go语言能做什么
go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用,go 语言的简单、高效、并发特性吸引了众多传统语言开发者的加入,而且人数越来越多。
鉴于go语言的特点和设计的初衷,go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,go语言广泛应用于web 应用、api应用、下载应用等;除此之外,go语言还适用于内存数据库和云平台领域,目前国外很多云平台都是采用go开发。
服务器编程,以前你如果使用c或者c++做的那些事情,用go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
分布式系统、数据库代理器、中间件等,例如etcd。
网络编程,这一块目前应用最广,包括web应用、api应用、下载应用,而且go内置的net/http包基本上把我们平常用到的网络功能都实现了。
数据库操作
开发云平台,目前国外很多云平台在采用go开发
国内外有哪些企业或项目使用go语言
go发布之后,很多公司特别是云计算公司开始用go重构他们的基础架构,很多都是直接采用go进行了开发,最近热火朝天的docker就是采用go开发的。【相关推荐:go视频教程】
使用 go 语言开发的开源项目非常多。早期的 go 语言开源项目只是通过 go 语言与传统项目进行c语言库绑定实现,例如 qt、sqlite 等;
后期的很多项目都使用 go 语言进行重新原生实现,这个过程相对于其他语言要简单一些,这也促成了大量 使用 go 语言原生开发项目的出现。
比如阿里中间件、聚美优品、高升控股、探探、斗鱼直播、人人车、亚信、udesk、方付通、招财猫、三一集团、美餐网等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,golang特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。go语言作为一门大型项目开发语言,在很多大公司相继使用,甚至完全转向go开发。
写在最后
当然,一个技术能不能发展起来,关键还要看三点。(以下观点引自https://www.cnblogs.com/qwangxiao/p/8318894.html)
• 有没有一个比较好的社区。像 c、c++、java、python 和 javascript 的生态圈都是非常丰富和火爆的。尤其是有很多商业机构参与的社区那就更为人气爆棚了,比如 linux 的社区。
• 有没有一个工业化的标准。像 c、c++、java 都是有标准化组织的。尤其是 java,其在架构上还搞出了像 j2ee 这样的企业级标准。
• 有没有一个或多个杀手级应用。c、c++ 和 java 的杀手级应用不用多说了,就算是对于 php 这样还不能算是一个好的编程语言来说,因为是 linux 时代的第一个杀手级解决方案 lamp 中的关键技术,所以,也发展起来了。 上述的这三点是非常关键的,新的技术只需要占到其中一到两点就已经很不错了,何况有的技术,比如 java,是三点全占到了,所以,java 的发展是如此好。
当然,除了上面这三点重要的,还有一些其它的影响因素,比如:
学习曲线是否低,上手是否快。这点非常重要,c++ 在这点上越做越不好了。
有没有一个不错的提高开发效率的开发框架。如:java 的 spring 框架,c++ 的 stl 等。
是否有一个或多个巨型的技术公司作为后盾。如:java 和 linux 后面的 ibm、sun……
有没有解决软件开发中的痛点。如:java 解决了 c 和 c++ 的内存管理问题。
用这些标尺来量一下 go 语言,我们可以清楚地看到:
go 语言容易上手;
go 语言解决了并发编程和写底层应用开发效率的痛点;
go 语言有 google 这个世界一流的技术公司在后面;
go 语言的杀手级应用是 docker,而 docker 的生态圈在这几年完全爆棚了。
所以,go 语言的未来是不可限量的。当然,go 可能会吞食很多 c、c++、java 的项目。不过,go 语言所吞食主要的项目应该是中间层的项目,既不是非常底层也不会是业务层。 也就是说,go 语言不会吞食底层到 c 和 c++ 那个级别的,也不会吞食到高层如 java 业务层的项目。go 语言能吞食的一定是 paas 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、agent、日志收集等等,没有复杂的业 务场景,也到不了特别底层(如操作系统)的中间平台层的软件项目或工具。而 c 和 c++ 会被打到更底层,java 会被打到更上层的业务层。
好了,我们再用上面的标尺来量一下 go 语言的杀手级应用 docker,你会发现基本是一样的。
docker 上手很容易。
docker 解决了运维中的环境问题以及服务调度的痛点。
docker 的生态圈中有大公司在后面助力。比如 google。
docker 产出了工业界标准 oci。
docker 的社区和生态圈已经出现像 java 和 linux 那样的态势。
以上就是golang是做什么的的详细内容。