
本期分享:
1.Go Module控制Go版本
2.int转string注意事项
3.Go项目查看mod依赖关系
Go Module控制Go版本
当我们开发Go项目涉及到两台及以上的机器,而且它们又刚好是不同操作系统的时候,可能就要把代码挪到另一台机器上重新编译,此时两台机器刚好又不是同一个Go版本,比如你有一台Windows电脑和一台Linux电脑:
Windows电脑的Go版本是1.22,所以在这台机器上新建Go项目的时候go.mod文件中的go版本会默认是1.22,比如:
shell
module xxx
go 1.22
不考虑交叉编译,此时你把代码挪到Linux上是Go的1.17版本,这个电脑又不能升级Go版本,此时就需要一条命令,把项目的Go版本改成当然操作系统支持的版本:
shell
go mod edit -go=1.17
扩展:可以看下官方文档对go.mod的说明https://go.dev/ref/mod
int转string注意事项
在有些编程语言中int转string只用简单的转换就可以,但是在Go语言中就需要注意了,比如下面这段代码,猜一下会输出什么:
go
package main
import "fmt"
func main() {
i := 12345
fmt.Println(string(i))
}
答案是:
shell
〹
不可读的乱码,并不是我们期望的"12345"。
正确的转换需要这样搞:
go
package main
import (
"fmt"
"strconv"
)
func main() {
i := 123
t := strconv.Itoa(i)
fmt.Println(t)
}
然后运行一下就输出了想要的字符串。
Go项目查看mod依赖关系
什么是mod依赖关系,就比如我们使用go get xxx
命令将依赖添加到我们的项目,这个依赖可能会有其他依赖,从go.mod文件中应该可以看出,大多数情况下使用一次go get xxx
命令,go.mod文件就会增加很多条依赖,那么如何理清这些依赖的关系,Go官方其实提供了命令:
shell
go mod graph //打印模块依赖图
这样的话可以在控制台打印出项目的依赖关系,但是想要更清晰的查看整个项目的依赖关系,还有一个很好用的工具:github.com/bayraktugrul/modview
下面分享一下它的用法:
1)安装
shell
go install github.com/bayraktugrul/modview@latest
2)到项目的根目录并运行:
shell
modview
这将在当前目录中生成一个名为dependency_tree.html
的文件。在 Web 浏览器中打开此文件以查看模块的依赖项关系图。

本篇结束~