go module本地包导入

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
    
  • 整体流程

相关推荐

  1. 【Hive-基础】表数据的导出导入(HDFS、本地

    2023-12-31 07:44:03       56 阅读
  2. idea 使用外本地

    2023-12-31 07:44:03       48 阅读
  3. MySQL安装,建立,导入本地Txt文件

    2023-12-31 07:44:03       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 07:44:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 07:44:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 07:44:03       82 阅读
  4. Python语言-面向对象

    2023-12-31 07:44:03       91 阅读

热门阅读

  1. mysql压力测试原因与mysql压力测试的方法

    2023-12-31 07:44:03       60 阅读
  2. Android Audio实战——AudioTrack分析(二十六)

    2023-12-31 07:44:03       56 阅读
  3. k8s学习 — (实践)第五章 服务发现

    2023-12-31 07:44:03       52 阅读
  4. 图像去噪opencv

    2023-12-31 07:44:03       61 阅读
  5. 云计算基础、Issa、Pssa、Saas区别

    2023-12-31 07:44:03       45 阅读