写点什么

关于 go run 命令执行过程中的“坑坑点点”

用户头像
liuzhen007
关注
发布于: 2021 年 08 月 03 日
关于 go run 命令执行过程中的“坑坑点点”

问题


解决


结尾

问题

在使用 Golang 编写程序的时候,经常会遇到单文件编译运行的场景,当我们使用一般的编译语句去编译的时候往往会报错,到底是怎么回事儿呢?接下我们结合具体的例子分析一下。

解决

下面是一段 Golang 最简单的的“Hello,world”代码:


package main
import "fmt"
func main() { fmt.Println("Hello, World!")}
复制代码


将上述代码保存成到 helloworld.go 文件中,当我们想要编译运行这个文件的时候,可以使用如下命令来实现:


go run helloworld.go


那么,程序会输出:


Hello, World!


截图如下:



通过上面的例子,我们发现当执行一个 Golang 文件时,操作非常简单,一个命令就搞定了。


但是,当 Golang 文件中引入了非官方的基础库时,问题就不这样简单了。上面的代码实例没有问题是因为 fmt 包是 Golang 的系统库(系统工具包)。


接下来,通过一个例子来了解一下。


下面一个引入了非官方的第三库的一段代码实例:


package main
import ( "github.com/minio/minio-go/v6" "fmt")
func main() { endpoint := "min.io.test" accessKeyID := "Q3AM3UQ867SPQQA43P2F" secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG" useSSL := true
// 初使化minio client对象。 minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL) if err != nil { fmt.Println("程序执行异常, 错误:", err.Error()) } fmt.Println("程序执行完毕")}
复制代码


从代码的 import 语句中可以发现,这段代码引入了一个第三方库 "github.com/minio/minio-go/v6" ,我们还是用上边的命令执行这段代码,将文件保存成 testMinio.go,执行如下命令:


go run testMinio.go


报错信息如下图所示:



为什么一样的命令,这里编译就不行了呢?


原因就是第一段代码使用的是系统库,Golang 编译器肯定可以识别,但是第二段代码使用了第三库,Golang 编译器在系统内没有找到,所以报错了,我们应该怎么解决呢?


可以考虑先将第三库导入到本地的 Golang 环境变量路径下,执行如下命令:


go get github.com/minio/minio-go/v6


正常情况下,会在 go/src/github.com 目录下生成 minio 相关文件夹,如果还不可以添加 “-v -u” 参数,命令如下:


go get -v -u github.com/minio/minio-go/v6


然后,进入对应目录执行如下命令:


go mod init


go mod tidy


执行结果截图如下:



再执行上边的编译命令即可。

结尾

好了,关于 go run 命令执行过程中遇到的链接库找不到的问题的解决方法就介绍完了,欢迎大家关注我,我是 liuzhen007,中国邦德,一个中国敲代码的邦德。

发布于: 2021 年 08 月 03 日阅读数: 13
用户头像

liuzhen007

关注

敲代码,搞开发。 2021.05.01 加入

本人深耕音视频技术,走全栈路线,前后端通吃,兼顾各端与流媒体服务器。 博客主页地址:https://liuzhen.blog.csdn.net 微信公众号:玩转音视频 欢迎交流学习!

评论 (1 条评论)

发布
用户头像
8月更文第一天!
2021 年 08 月 03 日 23:33
回复
没有更多了
关于 go run 命令执行过程中的“坑坑点点”