zoukankan      html  css  js  c++  java
  • go module可以导入本地的其它module

    关键: go.mod中手动写入:

    require "test" v0.0.0
    replace "test" => "../test"

    ------------

    测试环境:

    run1/go.mod

    run1/a.go

     

     test/a.go

    https://www.cnblogs.com/paulwhw/p/13853879.html

    --------------------

    使用go module导入本地包

    前言

      Go语言没有实现像Python那样实现灵活的导入本地包与模块的机制,在使用Go开发时遇到了本地包的相互导入问题,这里写一个demo总结一下。

    在同一项目中的情况

      项目的目录结构如下:其中mypackage包中的go脚本分别是主项目需要导入的函数;主项目是根目录下的那个main.go文件。

      代码如下:

    pack1.go
    复制代码
    package mypackage
    
    import (
        "fmt"
        "time"
    )
    
    // 记得函数名大写
    func Now2() {
        fmt.Println("in pack2 Now>>>",time.Now())
    }
    复制代码
    复制代码
    package main
    
    import (
        "fmt"
        "moduleDemo/mypackage" // 导入同一项目下的mypackage包
    )
    func main() {
        mypackage.Now()
        mypackage.Now2()
        fmt.Println("main...")
    }
    复制代码

      如果我们直接运行main.go中的代码会上报下面这样的错误:

      我们需要使用go module做一下下面处理,在项目的根目录执行:

    go mod init moduleDemo

      生成一个go.mod文件,里面的内容为:

    module moduleDemo
    
    go 1.14

      然后执行代码即可出来想要的结果,整个过程如下:

     

    在不同项目中的情况

      项目如下:run1包中的main.go想要导入mypackage中的脚本的函数。

       pack1.go与pack2.go与上面的代码一样,main.go的代码如下:

    复制代码
    package main
    
    import (
        "fmt"
        "mypackage"
    )
    
    func main()  {
        mypackage.Now()
        mypackage.Now2()
        fmt.Println("run1...")
    }
    复制代码

      首先我们需要在mypackage包的目录下执行命令:

    go mod init mypackage

      接着进入run1目录,执行module命令:

    go mod init run1

      生成的文件结构如下:

      当然有这些还不够,我们需要在run1目录下的go.mod文件中完善成下面这样:

    module run1
    
    go 1.14
    
    require "mypackage" v0.0.0
    replace "mypackage" => "../mypackage"

      然后执行run1中的代码即可:

  • 相关阅读:
    月薪3万+的大数据人都在疯学Flink,为什么?
    Flink应用场景
    Flink生态与未来
    flink学习笔记-split & select(拆分流)
    .NET MVC5简介(四)Filter和AuthorizeAttribute权限验证
    .NET MVC5简介(三)Result
    .NET MVC5简介(二)
    VUE基础实用技巧
    .NET MVC5简介(一)
    WebApi简介
  • 原文地址:https://www.cnblogs.com/oxspirt/p/14774584.html
Copyright © 2011-2022 走看看