Go mod本地包导入

导读:本篇文章讲解 小白学习:Go mod本地包导入,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

最近在学习go,在导入本都包遇到一个问题,根据网上许多教程来都走不通,最后在官网得到了最正确的答案。官网教程:Call your code from another module – The Go Programming Language (google.cn)

在golang 1.11之后加入了go mod来替代GOPATH,传统的go项目需要将包导入到$GOPATH/src目录下,比较麻烦,有了go mod 就可以在任意目录下导入自己的包了

1.首先创建一个工作目录

2.初始化一下我们的go mod

go mod init <project_name>

Go mod本地包导入

在这里写我们的main.go

package main

import (
        "fmt"
        my "zhihong.com/mymod"
        //my "go_package_test/mypackage"
)

func main(){
        fmt.Println("This is main")
        flag :=my.SayHello();
        fmt.Println(flag)
        //my.hello()
        //my.Talk()
}

3.然后,我们创建我们的包,这个目录的名字和package名一样

mkdir mymod
cd mymod
go mod init test   //这里会自动导入该包所以依赖的第三方包
vim hello.go

hello.go

package mymod

import "fmt"

func SayHello()string{

        fmt.Println("hello,(print in mymod)")
        return "success"
}

此时的项目树:

Go mod本地包导入

此时根据官网的描述:

Go mod本地包导入

大概的意思呢就是说你虽然写好了你自己的包,但是如果要被Golang使用,还需要发布到go的存储库,在那里go才能下载到你的包,所以我们需要发布我们的模块,go才能在本地找到它

接着我们执行:

go mod edit -replace zhihong.com/mymod=./mymod

此时我们的go mod多了一条重定向

Go mod本地包导入

此时还需要运行go mod tidy命令来同步你模块的依赖项

Go mod本地包导入

此时我们的go mod  (数字表示我们的版本信息)

Go mod本地包导入

此时我们执行我们的main.go

Go mod本地包导入

程序已经正确执行了!

还有最后提一点,如果你遇到这个错误:cannot refer to unexported name

Go mod本地包导入

这里是因为go语法中如果是变量或者函数是小写字母开头,那么它只能在包内使用,要大写字母开头才能够在别的包中使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114951.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!