[Golang] go modules使用

关于go modules的使用外面的教程实在太多了,我这里只讲下我本身使用的三种情形。git

 

准备工做:

一、新建个文件加gomod_test。github

二、在这个目录输入命令 go mod init gomod_testui

 

情形一:比较常见的状况,引用github的包

比方我有以下代码 main.gospa

package main

import (
    "fmt"

    "github.com/name/foo"
)

func main() {
      foo.Foo()    
}

直接命令 go mod tidy,而后就能够go build编译code

 

情形二:引用本身工程里的包

目录结构以下 blog

gomod_test教程

  |-----main.goip

  |-----mypackageget

      |---------mypackage.goit

 

main.go要引用mypackage包,代码改为以下。

注意 "gomod_test/mypackage"gomod_test是咱们上面go mod init gomod_test的模块名,mypackage是你的包目录

package main

import (
    "fmt"
   "gomod_test/mypackage"  
    "github.com/name/foo"
)

func main() {
      foo.Foo()   
      mypackage.XXX() 
}

  

情形三:引用本地包

这种状况的缘由是:比方咱们依赖了github.com/name/mylib这个库,但咱们须要在纯内网无外网环境下编译,这时候go get不到github的代码,就须要咱们用replace替换成本地包。

一、首先我须要把github.com/name/mylib代码下载下来,你能够直接下载zip,也能够clone,到工程根目录

二、编辑go.mod文件加入下面这一行(也能够用go mod edit命令编辑,更正统一些)

replace github.com/name/mylib=> ./mylib

要确保 ./mylib跟你的下载代码的目录一致

目录结构以下

gomod_test

  |-----main.go

  |-----mypackage

      |---------mypackage.go

  |-----mylib

      |---------mylib.go

 

main.go 改为以下

package main

import (
    "fmt"
    "gomod_test/mypackage"  
    "github.com/name/mylib"
    "github.com/name/foo"
)

func main() {
      foo.Foo()   
      mypackage.XXX()
      mylib.DoXXX()
}

 

其余

一、若是想把将依赖复制到vendor下能够用go mod vendor命令

二、若是想用vendor里的依赖库编译可执行文件能够用命令 go build -mod=vendor

相关文章
相关标签/搜索