Go语言:全球最佳编程语言?——Golang学习笔记(1)

发表时间: 2021-09-13 10:23


一. 为什么要学习golang

1. 运行快:Golang 从 2009 年有谷歌正式发布以来,依靠其极高运行速度和高效的开发效率,迅速占据市场份额。Golang 从语言级别支持并发,通过轻量级协程 Goroutine 来实现程序并发运行。能够用较小的内存消耗支持高并发。这点优势我将在后面的内容中详细说明。

2. 开发效率高:说到开发效率高的语言,很多人第一个想到的就是动不动能让人月薪过万的python(手动doge)。然而事实上,很多的朋友可能和笔者一样,真正到招聘网站上看看,发现到处都是Java的世界。

3. 对云原生友好:go是docker容器等云原生组件的开发语言,在云原生和微服务这方面 Go 还是有不少优势的。

4. 内卷小,竞争强度比java低:在目前培训班批量生产java程序员的背景下,java开发正在以肉眼可见的速度变卷,这时候学习go,就可以很快帮助各位程序员们离开内卷的苦海。目前很多知名互联网大厂,比如字节和B站,shopee等,使用Go语言的比例都在不断上升。

二. Golang 有哪些项目

云原生组件:

(1)docker:docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。

(2)kubernetes:Kubernetes 是来自 Google 云平台的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用。

web框架:

(1)gin:Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。

(2)beego:是一个用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra

存储:

(1)minio:MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。也是号称目前最快的面向对象存储服务器。

(2)ipfs/go-ipfs:IPFS 是分布式文件系统,寻求连接所有计算机设备的相同文件系统。在某些方面,这很类似于原始的 Web 目标,但是 IPFS 最终会更像单个比特流群交换的 git 对象。IPFS = InterPlanetary File System

以笔者就职的技术团队来说,尽管目前使用的后端主要开发语言为java,但研发用到的工具和组件就有docker,k8s,Minio等是用Go语言开发的,并且这些组件在团队项目中都扮演着至关重要的角色,所以Go还是一门应用非常广泛的语言。