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

举报
liuzhen007 发表于 2021/08/05 20:57:34 2021/08/05
【摘要】 问题解决结尾 问题在使用 Golang 编写程序的时候,经常会遇到单文件编译运行的场景,当我们使用一般的编译语句去编译的时候往往会报错,到底是怎么回事儿呢?接下我们结合具体的例子分析一下。 解决下面是一段 Golang 最简单的的“Hello,world”代码:package mainimport "fmt"func main() { fmt.Println("Hello, World!...

问题

解决

结尾

问题

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

解决

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

package main

import "fmt"

func main() {
   fmt.Println("Hello, World!")
}

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

go run helloworld.go

那么,程序会输出:

Hello, World!

截图如下:

image.png

通过上面的例子,我们发现当执行一个 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

报错信息如下图所示:

image.png

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

原因就是第一段代码使用的是系统库,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

执行结果截图如下:

image.png

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

结尾

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。