关于 go run 命令执行过程中的“坑坑点点”
Posted Data-Mining
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 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 命令执行过程中遇到的链接库找不到的问题的解决方法就介绍完了,欢迎大家关注我,我是 DataMining,别名 liuzhen007,中国邦德,中国一个会敲代码的邦德。
以上是关于关于 go run 命令执行过程中的“坑坑点点”的主要内容,如果未能解决你的问题,请参考以下文章
go的三个运行基本命令的区别,go run ,go build 和 go install
第1阶段——uboot查找命令run_command函数和命令定义分析
go语言学习笔记 — 基础 — go工具:编译后运行 —— go run