go module本地包导入全过程

 更新时间:2026年04月29日 16:14:02   作者:anjushi_  
文章介绍了使用gom模块化管理工具进行本地包导入的方法,包括启用、配置Gom、创建工作目录、新建与文件、编写代码、运行与发布模块等等等、自动更新与同步等,通过具体流程演示了如何在本地使用与管理Gom模块化包导入与更新的过程om

go module本地包导入

golang 1.11之后加入了go mod来替代GOPATH

官方文档参考:https://golang.google.cn/doc/tutorial/call-module-code

启用go mod

开启 Go modules

# 临时开启 Go modules 功能
export GO111MODULE=on
![请添加图片描述](https://img-blog.csdnimg.cn/direct/3cda800aae2041f98bef026bc274dba3.jpeg)

# 永久开启 Go modules 功能
go env -w GO111MODULE=on

# 设置 Go 的国内代理,方便下载第三方包
go env -w GOPROXY=https://goproxy.cn,direct

通过 go env

go env

主项目工作目录

创建一个工作目录

mkdir myapp

新建mod文件

cd myapp
go mod init myapp

添加函数main.go

package main
    
import (
    "fmt"
)

func main(){
    fmt.Println("This is main")
}

运行

go run main.go

本地module目录

切换目录,新建自己的包

cd ..
mkdir mypkg
go mod init mypkg

包内新建hello.go文件

package mypkg

import "fmt"

func SayHello()string{
    fmt.Println("hello,(print in mypkg)")
    return "success"
}

发布和使用模块

main.go 尝试导入 mydemo.com/mypkg 模块时,Go 工具链会从本地的 ../mypkg 目录加载模块,而不是尝试从远程位置下载

指定包的本地路径

go mod edit -replace mydemo.com/mypkg=../mypkg

在main.go添加自己的包

package main
 
import (
    "fmt"
    my "mydemo.com/mypkg"
)

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

更新和同步

go mod tidy

查看go mod,已经自动更新

运行

go run main.go

整体目录结构

└── twogo
    ├── myapp
    │   ├── go.mod
    │   └── main.go
    └── mypkg
        ├── go.mod
        └── hello.go

整体流程

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • go语言遍历文件夹示例

    go语言遍历文件夹示例

    这篇文章主要介绍了go语言遍历文件夹示例,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03
  • Go实现各类限流的方法

    Go实现各类限流的方法

    这篇文章主要介绍了Go实现各类限流的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • golang实现数组分割的示例代码

    golang实现数组分割的示例代码

    本文主要介绍了golang实现数组分割的示例代码,要求把数组分割成多个正整数大小的数组,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • go语言中的defer关键字

    go语言中的defer关键字

    这篇文章介绍了go语言中的defer关键字,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Go语言中CGO的使用实践

    Go语言中CGO的使用实践

    本文主要介绍了Go语言中CGO的使用实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • golang中的io.ReadCloser与ioutil.NopCloser使用

    golang中的io.ReadCloser与ioutil.NopCloser使用

    这篇文章主要介绍了golang中的io.ReadCloser与ioutil.NopCloser使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 浅谈Golang的new与make区别是什么

    浅谈Golang的new与make区别是什么

    本文主要介绍了Golang的new与make区别是什么,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Go strconv包实现字符串和基本数据类型转换的实例详解

    Go strconv包实现字符串和基本数据类型转换的实例详解

    在Go语言(Golang)的编程实践中,strconv包是一个非常重要的标准库,它提供了在基本数据类型(如整型、浮点型、布尔型)和字符串之间的转换功能,本文给大家介绍了关于Go语言字符串转换strconv,需要的朋友可以参考下
    2024-09-09
  • 浅析Go语言中内存泄漏的原因与解决方法

    浅析Go语言中内存泄漏的原因与解决方法

    这篇文章主要来和大家聊一聊Go语言中内存泄漏的那些事,例如内存泄漏的原因与解决方法,文中的示例代码讲解详细,需要的小伙伴可以参考下
    2024-02-02
  • 深度剖析Golang中的数组,字符串和切片

    深度剖析Golang中的数组,字符串和切片

    Golang 是一种以简洁性、并发性和性能而著称的编程语言。其重要特性之一是能够处理数组、字符串和切片等数据类型。本篇文章将深入讨论这些数据类型,并探讨如何在代码中使用它们
    2023-04-04

最新评论