Go语言之十条命令
Go语言简介
Go语言(又称Golang)是由Google开发的一种开源编程语言,首次公开发布于2009年。Go语言旨在提供简洁、高效、可靠的软件开发解决方案,特别强调并发编程和系统编程。
Go语言的基本特征
-
静态强类型:Go语言在编译阶段确定每个变量的数据类型,并且在后续的代码中不允许改变这个数据类型。
- 编译型语言:代码在执行前需要经过编译过程,编译器将源代码转换成机器可执行的低级指令。
- 并发支持:Go语言提供了强大的并发编程支持,能够有效地利用多核与联网的计算机。
- 垃圾回收:Go语言具有方便的垃圾收集机制,减少了内存管理的复杂性。
- 运行时反射:Go语言支持运行时反射,使得在运行时动态地调用对象的方法和访问对象的属性成为可能。
Go语言的应用场景
Go语言广泛应用于以下领域:
- 网络编程:Go语言提供了强大的网络编程支持,适合开发高性能的网络服务。
- 系统编程:由于其底层操作系统的访问能力,Go语言常用于系统编程和分布式系统开发。
- 并发编程:Go语言的并发机制使得它非常适合处理高并发场景,如游戏服务器端开发。
Go语言的发展历史
Go语言的开发始于2007年,由Google的Robert Griesemer、Rob Pike和Ken Thompson等人设计。2009年,Go语言正式对外发布。自发布以来,Go语言经历了多次版本更新,不断引入新特性,如模块系统、泛型支持等,进一步提升了其性能和开发效率。
Go设置的相关命令。
1.设置GoProxy国内镜像。
$ go env -w GO111MODELE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
2.查看依赖项。
-
列出当前模块及其所有直接和间接依赖模块
$ go list -m all
解析:
-
当你运行此命令时,它会显示所有依赖模块的模块路径、版本号等信息。
-
该命令可以帮助开发者了解项目中的所有依赖情况。
输出示例:
example.com/myproject v0.1.0
golang.org/x/tools v0.1.5
github.com/stretchr/testify v1.7.0
3.查看当前依赖可用版本。
$ go list -m -versions github.com/gin-gonic/gin
4.下载依赖。
$ go get github.com/gin-gonic/gin@1.8.0
5.查看依赖图。
-
显示模块的依赖图,以文本方式展示当前模块依赖关系
$ go mod grph
解析:
-
该命令会输出当前模块依赖树的详细信息,包括每个模块和它的依赖模块。
-
格式为
<module1>@<version1> <module2>@<version2>
,表示模块1依赖模块2。 -
这个命令主要用于了解项目中依赖的复杂性,以及发现潜在的循环依赖或版本冲突。
输出示例:
example.com/myproject@v0.1.0 golang.org/x/tools@v0.1.5
golang.org/x/tools@v0.1.5 golang.org/x/mod@v0.3.0
6.整理依赖。
-
清理
go.mod
文件,移除未使用的依赖,添加遗漏的依赖。
$ go mod tidy
7.升级某个包。
-
升级到最新的次要版本或者修订版本。
$ go get -u
-
升级到最新的修订版本。
$ go get -u=patch
解析:
-
go get -u
会更新模块到最新的次版本或修订版本,不会跨越主版本。 -
go get -u all
会更新所有模块,而指定模块名如golang.org/x/tools
则仅更新该模块。 -
更新后,
go.mod
和go.sum
文件会相应地发生变化。
8.replace使用。
-
仓库是project-A,但是代码仓库go.mod中设置的是github.com/A。
$ go mod edit -replace github.com/A=github.com/project-A@v1.0.0
9.单元测试命令。
-
所有在包目录中,以_test.go为后缀的源码文件都会b被go test运行到。
-
不用担心_test.go源码文件内容过多,因为go build命令不会j将这些测试文件打包到最后的可执行文件中。
$ go test
10.性能单元测试命令。
$ go test -bench=".*"