【SRE】【Golang】你真的了解Go语言吗?

文章转载自公众号:SRE废柴实验室
在这里插入图片描述
喜欢的话可以关注一下哦~专注SRE 希望早日实现国内的SRE精英联盟
持续更新SRE相关内容:k8s、golang、云原生、架构等
文章链接:你真的了解Golang吗?

Go历史

Go的诞生

Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。

  • 2007 年 9 月 20 日的下午,在谷歌山景城总部的一间办公室里,谷歌的大佬级程序员 Rob Pike在等待一个 C++ 项目构建的过程中和谷歌的另外两个大佬级程序员 Robert Griesemer和 Ken Thompson进行了一次有关设计一门新编程语言的讨论。
  • 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
  • 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
  • 企业运行维护很多C/C++的项目,C/C++程序运行速度虽然很快(因为采用静态编译),但是编译速度却很慢,同时还存在内存泄露的一系列困扰需要解决。
为什么使用Go
  1. 简单好记的关键词和语法。轻松上手,简单易学。
  2. 更高的效率。比Java,C++等拥有更高的编译速度,同时运行效率媲美C,同时开发效率非常高。
  3. 生态强大,网络上库很丰富,很多功能使用Go开发非常简单。
  4. 语法检查严格,高安全性。
  5. 严格的依赖管理,go mod命令。
  6. Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。
  7. 跨平台交叉编译,windows就可以编译出mac,linux上可执行的程序。
  8. 异步编程复杂度低,易维护,GO 语言中 Channel 设计,异步程序写起来非常自然。
  9. 语言层面支持并发,go关键字(协程)使得go的并发效率极高。
  10. 严格的语法规范,所有程序员写出来的代码都是一样的,对大团队来说,非常友好。
  11. Go 的并发、性能、安全性、易于部署等特性,使它很容易成为“云原生语言”。容器和云的使用上非常广
如何下载Go

Golang官网:https://golang.google.cn/dl/
请添加图片描述
Windows:选择对应的操作系统,可以下.msi直接安装,也可以下zip包自己放到指定位置,然后添加PATH路径,设置GOPATH等环境变量即可
Linux:选择对应的tar包,然后解压放到对应的目录下,并添加PATH路径和设置GOPATH等环境变量即可

需要配置的环境变量有:

  1. GOROOT:go语言所在的目录,用于全局执行go相关的命令
    在path路径里要添加ROOT目录下的bin目录

请添加图片描述

go env 能够输出各项环境变量就是配置好了,然后能看到对应的GOROOT

请添加图片描述

  1. GOPATH:工作目录,工程代码存放的位置,引入go mod 包管理之后,所有的第三方包都会在 GOPATH/pkg/mod/ 目录下,并分为不同来源的包放在不同的文件夹下,方便统一进行管理,这里GOPATH不管是Windows还是Linux 都推荐设置在用户的家目录的go文件夹下,这是作者比较喜欢的一个方式

请添加图片描述
在这里插入图片描述

在Linux中,可以在 .bashrc 中用 export 命令设置好各项go的环境配置变量,source .bashrc 即可

  1. GOPROXY:代理,由于go在下载第三方包的时候,可能需要翻墙用到外面的资源,就类似于python pip install 需要设置一个源一样,Go 安装第三方包也需要配置代理,方便我们进行第三方库的下载和使用

图片6

  1. 全都设置完成后 go env 命令查看是否都配置成功

开始用一个小demo入门Go吧~
我们先在测试目录下新建一个hello文件夹,并进入,输入命令go mod init hello

图片7

会生成一个go.mod 文件,这个go.mod文件实际上就是一个go的包管理文件,用来管理项目所需要使用的依赖库的版本的。

接下来实现要给最简单的程序吧
vim main.go

// package 定义包名 main 包名
package main

// import 引用库 fmt 库名
import "fmt"

// func 定义函数 main 函数名
func main() {
	// fmt 包名 . 调用 Print 函数,并且输出定义的字符串
	fmt.Print("Hello Golang")
}

运行以下命令: go run main.go

图片8

相应的开发工具

Goland、vscode 都是非常好用的开发工具
其实以作者的使用习惯来说更偏向于使用Goland,但是vscode对多种语言都很友好,并且免费,各有各的好处,可以根据自己不同的情况去做不同的选择

Go语言的适用场景:

Go因为其优秀的并发模型和轻量级线程(协程 goroutine)的支持,所以Go特别擅长处理高并发的网络服务和分布式系统,在构建Web服务、微服务架构、云计算服务等方面表现突出

  1. Web服务框架有诸如 gin的轻量级框架和beego 这种大型框架,并且像知乎等大型服务的后端架构是用Go实现的;
  2. 在微服务架构方面有 go-zero、kratos 等优秀的微服务架构,go-zero广泛应用于各个大公司的微服务架构,kratos也是 bilibili 开源的微服务架构,功能强大,并且应对大量用户的表现十分优良;
  3. 容器化和微服务是云计算领域应用最广泛的一种技术架构。它可以将应用程序打包成一个个独立的容器,实现快速部署和扩展。Go的协程机制和高并发性使得它成为构建高性能微服务的理想语言;在云计算环境中,分布式计算是常见的需求。Golang提供了许多库和工具来简化分布式计算的开发。

此外,Golang还适用于开发高性能的系统工具、网络编程、大数据处理等领域。总的来说,Golang适合需要高性能、高并发和简洁代码的场景。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值