云原生之高级Go工程师养成记(一):绪论及Go环境安装

发布时间:2023年12月18日

一、绪论

1.1 本专栏适合学习的群体

想短时间内系统转型 Go 工程师 提高 CRUD 水平,无自研框架经验
拔高技术深度,做专、做精需求的同学 进阶工程化,拥有良好开发规范和管理能力

1.2 为什么选择 Go

Go 语言简单易学 国内头部公司纷纷开始使用 Go (BAT、字节跳动、B站、小米、滴滴、京东、360、七牛云、知乎、美团等)
云原生时代的领导语言 Go 适合高并发和微服务开发 快速增长的职位需求 国内使用热度超过国外

1.3 Go 语言的优势

其它语言的弊端:

  1. 对多核 CPU 缺乏支持。很多语言诞生过早,还停留在单核 CPU 时代,未对多核 CPU 并行做优化;
  2. C语言等原生语言缺乏好的依赖管理(C语言依赖头文件)
  3. Java、C++ 等语言过于笨重。很小一个需求,也需要很多代码,甚至需要引入很重的框架
  4. C、C++没有提供垃圾回收,这对很多程序员来说并不友好

Go 设计者推崇 最小方式 思维,即一件事仅有一种方式,或尽可能少的方式去完成。目的是减少开发人员选择的痛苦,减少理解别人选择的苦恼。Go 语言的优势:

仅有25个关键字,简洁的语法 --- 开发效率高
集各种语言的优势 --- 大量参考c和python
执行性能高 - 直接编译成二进制,部署非常简单
内置并发支持,对多核计算机支持友好。goroutine、channel、select 就是为并发而生的
内置垃圾回收器,大大降低程序员管理内存的负担
去除隐式类型转换、去除指针算数,提高语言健壮性
首字母大小写决定可见性,通过约定而不是声明告诉开发者,提高阅读效率
故意不支持函数默认参数,必须明确每个参数意义,提高设计的清晰度和代码可读性
没有面向对象的类,也没有子类,没有构造函数和析构函数
偏好组合
任何类型都可以拥有方法
接口只是方法的集合,其实现是隐式的(无需implements显示声明)
n--、n++都是语句,不是表达式。没有--n、++n
没有三元运算符
内存总是初始化为零值
没有异常
内置字符串、切片、map等类型
官方提供了丰富的工具链,涵盖了编译、编辑、依赖获取、调试、文档、性能分析等诸多方面

1.4 杂谈

杂谈 ①:Go 语言能够做什么?

Web 开发 - gin、beego 等
容器虑拟化 - docker、k8s、istio
中间件 - etcd、tidb、influxdb、nsg等
区块链 - 以太坊、fabric
微服务 - go-zero、dapr、 rpcx、kratos、dubbo-go、 kitex

杂谈 ②:为什么要从0到1自研框架?

初级开发重视功能,高级开发看重原理
自研是了解细节的最好方法
懂微服务细节,提高架构能力
大公司都在自研,非常看重自研能力
面试很容易问到微服务的细节
自研能更好的适应公司内部的定制化需求

杂谈 ③:学习工程化的重要性!

工程化思维在我们每天写代码中都需要具备
好的工程化思维意味着代码质量
工程化思维决定了我们的编码方式

杂谈 ④:工作中遇到的代码规范问题

写出来的代码没法写测试用例
日志打印很随意
对依赖注入等概念不清楚
代码发布流程随意
代码不规范

杂谈 ⑤:实际工作中这些问题不可避免

不知道如何写代码规范
不知道开发上线的流程规范
不够深入,遇到问题很难解决
缺乏架构思维

二、Go 开发环境搭建

学习 Go 语言之前,必须学会如何搭建 Go 语言的开发环境,不同操作系统有不一样的安装方式。官方下载地址为:https://golang.org/dl/ 由于国内网络限制问题,我们可以在 https://golang.google.cn/dl/ 下载安装包。

2.1 在 Windows 下安装 Go

在浏览器访问 https://golang.google.cn/dl/,单击 Windows 的下载链接,浏览器自动下载 MSI安装包,如下图所示:

双击运行下载好的 MSI安装包 即可启动安装程序,在欢迎界面,直接单击 Next 即可,如下所示:

看到 Go 语言的用户许可协议,直接勾选 I accept the terms in the License Agreement 复选框,然后单击 Next 按钮,如下图所示:

在下一个界面选择 Go 语言的安装路径,默认安装到 C:\Program Files\Go\ 文件夹,我将安装路径改为 D:\develop_tools\go 文件夹,如下图所示:

安装路径设置成功后,下一步直接单击 Next 按钮,再单击 Install 按钮,等待程序完成安装,最后单击 Finish 按钮即可完成整个安装过程,如下图所示:

安装完成后打开 CMD 窗口,在 CMD 窗口下输入 go version 并按回车键即可看到当前Go语言的版本信息,说明我们已完成Go语言开发环境的搭建,如下图所示:
在这里插入图片描述
ps: 大多数情况下,使用 MSI安装包 搭建Go语言开发环境无须设置系统的环境变量。如果在 CMD 窗口下查看Go语言的指令信息出现异常,则说明Go语言还没有添加到系统的环境变量,此时需要手动添加。为了后续维护的方便,我这里统一设置一下Go的环境变量(这是在后续文章写完之后进行的补充,建议大家按照操作更改一下,否则在使用VsCode配置Go环境的时候会出现莫名错误)

  1. 首先,右键此电脑 → 属性 → 高级系统设置 → 环境变量
  2. 新建系统变量,按下图所示填写后点击确定:
    在这里插入图片描述
  3. 然后可以找一个位置做为 GOPATH 的目录,这里我选择在 E 盘新建一个名为 go 的目录,然后新建系统变量:
    在这里插入图片描述
  4. 把用户变量里的 GOPATH 也换成自定义的目录:
    在这里插入图片描述
  5. 编辑用户变量里的 Path:这里原本是 %USERPROFILE%\go\bin 改为 %GOPATH%\bin
  6. 在 GOPATH 对应的目录下 (我的是 E:\go) 新建三个文件夹:bin,pkg,src,如下图所示:
    在这里插入图片描述
  7. 最后可以去看一下系统变量里的 Path (点击 Path 然后编辑),一般的话可以看到 Go 的路径已经配置好了,我们不需要动,这是 Go 在安装时自动配置的。之前用 go version 查看版本号也是因为这里的环境变量,如果以后出现命令未找到等问题,可以回到这里检查。
    在这里插入图片描述
  8. 配置环境完变量后,记得点击 「确定」 再退出。最后,Win + R,输入 cmd 打开命令行,输入 go env 可以检查一下,主要是看一下红框里的两个,应该是和我们前面设置的一致:
    在这里插入图片描述

2.2 在 Linux 下安装 Go

目前主流的 Linux 操作系统有 Debian,Ubuntu,RedHat,CentOS,Fedora 等,不同操作系统在使用上存在一定差异,但从整体来看都是大同小异。本小节以64位的 CentOS7 操作系统为例,讲述如何搭建Go语言的开发环境。

从 Windows/MacOS 将下载好的 go1.21.1.linux-amd64.tar.gz 安装包到 /data/soft/ 目录下,如下图所示:

ps: 也可以直接使用命令 wget 进行下载,如下图所示:
在这里插入图片描述
解压:[root@amoxiang soft]# tar -zxvf go1.21.1.linux-amd64.tar.gz
解压成功后,cd go,输入 bin/go version 并按回车键,系统将会显示Go语言的版本信息,如下图所示:
在这里插入图片描述
配置环境变量:[root@amoxiang go]# vim /etc/profile,在文件末尾添加如下内容:

export GOROOT=/data/soft/go  # 设置Go语言的安装路径
# 第三方依赖包安装路径 以前放自己开发的代码,目前不要这样放了
export GOPATH=/data/soft/golang  # 设置开发中的项目工程路径,它指向/data/soft/golang文件夹,该文件夹需要自行创建
export PATH=.:$PATH:$GOROOT/bin # 将Go语言安装路径的bin文件夹添加到系统环境变量

环境变量立刻生效:source /etc/profile。系统环境变量添加成功后,在 CentOS7 命令行的任意路径下输入 go version 指令就能看到Go语言的版本信息,如下图所示:
在这里插入图片描述

2.3 安装 GoLand

环境变量补充:运行命令 go env 查看 Go 的环境变量。

# go早期版本管理依赖包方式使用GOPATH和vendor文件夹
# 从1.11引入Go Module,1.16版本开始GO111MODULE默认为on,会根据go.mod管理和下载依赖
set GO111MODULE=
# GOPROXY 1.13开始支持。国外站点经常失败,建议改为国内镜像站地址
# direct 表示从镜像下载失败后,直接从原版本库地址下载 off 表示不允许从任何源下载
# GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# GOPROXY=https://repo.huaweicloud.com/repository/goproxy/ 
set GOPROXY=https://proxy.golang.org,direct # 一定要配置,不然后面安装包经常下载包很困难
# 设置命令如下: 
# GO111MODULE=auto: 分别从GOPATH、vendor文件夹或go.mod寻找包。
C:\Users\Administrator>go env -w GO111MODULE=auto  # 为了更好地兼容新旧版本问题
C:\Users\Administrator>go env -w GOPROXY=https://goproxy.cn,direct

Go 语言的开发环境搭建成功后,下一步安装集成开发环境(Integrated Development Environment, IDE)。集成开发环境是提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具,它是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件。常用的 IDE 软件有 GoLand,VS Code,Vim GO,Sublime Text,LiteIDE,Eclipse,Atom 等。本小节以 GoLand 为例,讲述如何使用 GoLand 搭建 Go 语言的开发环境。

GoLandJetBrains 公司推出的 Go 语言集成开发环境,同样基于 IntelliJ 平台开发,支持 JetBrains 的插件体系。在浏览器打开 https://www.jetbrains.com/go/download 并下载 GoLand,如下图所示:
在这里插入图片描述
GoLand 分别支持 Windows,Linux,macOS 三大系统的使用,选择下载 Windows 安装包并双击运行,根据安装提示完成安装过程即可,安装过程较为傻瓜式,本小节就不再详细讲述了。安装成功后,在桌面双击 GoLand 图标,刚开始提示软件配置,选择默认配置即可进入软件激活界面,激活方式有3种:Jetbrains 用户激活、激活码和许可服务器,如下图所示:

不同版本的 GoLand 有不同的免费激活方式,由于软件版本迭代更新较快,导致每个版本的激活方式各不相同,有需要的读者可以从网上查找最新的激活教程。

2.4 搭建 GoLand 环境

GoLand 激活成功后,再次打开 GoLand,在 Welcome to GoLand 界面单击 Configure,找到并单击 Settings,从而进入 Settings 界面,如下图所示:

Settings 界面打开 Go→GOROOT 选项,然后选择已安装的 Go 语言编译器,如下图所示:
在这里插入图片描述
下一步单击 GOPATH,在该界面看到 Global GOPATHProject GOPATH 配置,如下图所示:

Global GOPATHProject GOPATH 的配置说明如下:

  1. Global GOPATH:代表全局 GOPATH,一般来源于系统环境变量中的 GOPATH,所有 Go 语言项目都能使用该路径,它与 Go 语言的环境变量 GOPATH 相同。
  2. Project GOPATH:代表项目所使用的 GOPATH,仅适用于当前项目。

安装 Go 语言开发环境已设置了环境变量 GOPATH (即 Global GOPATH),我们只需在 Project GOPATH 下配置即可 (此处可以忽略)。在 E:\Code\Spider2023\ 文件夹下创建 go_demo 文件夹,然后在 Project GOPATH 下添加文件夹的路径信息,如下图所示:
在这里插入图片描述

2.5 第一个 Go 程序 “Hello World”

使用 GoLand 创建新项目 E:\Code\Spider2023\learn-go,如下图所示:
在这里插入图片描述
在这里插入图片描述
在该文件夹下创建 hello.go 文件并编写 Go 语言代码,代码如下:

// ① package main 代表程序或项目运行的主入口文件,如果改为package aa,则设为程序或项目的包
package main

import "fmt" // ② import "fmt"代表导入内置包fmt,主要实现数据的标准化输出

func main() { // ③ func main(){}代表程序运行的主入口
	fmt.Println("Hello World")
}

GoLand 中运行 hello.go 的代码,运行结果可以在 Run 窗口下查看,如下图所示:
在这里插入图片描述

2.6 补充:VSCode 配置 Go 环境

① Go 插件:
在这里插入图片描述
② gopls: gopls(发音Go please) 是官方提供的模块,实现语言服务器协议 LSP 的 Language Server,具有构建、格式化、自动完成等功能。LSP 是由微软开发的开发标准,它为便捷器提供对语言特性的支持。当你使用模块和 VSCode 时,在编辑器中点击保存将不再直接运行 go build 命令。现在发生的情况是,一个请求被发送给 gopls,gopls 运行适当的 Go 命令和相关的 API 来提供编辑器反馈和支持。参考 https://github.com/golang/tools/blob/master/gopls/README.md 可以手动安装,也可以在 VSCode 中编辑第一个 xxx.go 文件触发安装,我这里是直接打开刚刚 GoLand 创建的新项目 E:\Code\Spider2023\learn-go 触发安装。
在这里插入图片描述
安装成功之后如下图所示:

命令行中运行:

PS E:\Code\Spider2023\learn-go> go run .\hello.go
Hello World
PS E:\Code\Spider2023\learn-go> 

这个 VSCode 插件安装后,可以方便的阅读 Go 代码,尤其是源代码中有大量函数、结构体、接口时,如下图所示:
在这里插入图片描述
也可以安装 Golang postfix 这样的工具,提高编码效率,如下图所示:
在这里插入图片描述
至此今天的学习就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习Go语言的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

????好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
????如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
?编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

文章来源:https://blog.csdn.net/xw1680/article/details/133322831
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。