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

相关推荐
Interview Aid1125 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
东风破_13 小时前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
CoderIsArt13 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
东风破_13 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_14 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
jay神15 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
AI情绪识别开源15 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
「QT(C++)开发工程师」16 小时前
C++ auto 用法详解
开发语言·c++
OPEN-F16 小时前
C++STL教程:容器适配器与实用工具
开发语言·c++