1、第三方包及自定义包导入
go版本:1.22.0
GO111MODULE 是 Go 1.1.1 引入的新版模块管理方式。
之前的版本中,安装的第三方库,要求存放在#GOPATH环境变量对应的目录下,否则编译时找不到。
新版本中,如果设置go env -w GO111MODULE=off,表示使用旧的模块管理方式安装
2、实例
对于在项目中同时引用第三方包和自定义包,可以使用module的模块管理方式,而且项目的位置不必限制在#GOPATH
首先需要将项目初始化为module:go mod init module_name
此时当前目录下生成go.mod文件,内容包括module名称、go版本、需要的第三方依赖
module cdat1.0
go 1.22.0
require (
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/urfave/cli/v2 v2.27.2 // indirect
github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect
k8s.io/klog v1.0.0 // indirect
)
目录结构:
main.go文件中引用自定义包时,通过module_name/pkg_name引用
// main.go
package main
import (
"fmt"
"log"
"os"
"github.com/urfave/cli/v2"
"cdat1.0/utils"
)
func main() {
utils.TestFunc()
name := "Go Developers"
fmt.Println("Azure for", name)
app := &cli.App{
Name: "boom",
Usage: "make an explosive entrance",
Action: func(c *cli.Context) error {
fmt.Println("boom! I say!")
return nil
},
}
err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}
// utils/func.go
package utils
import "k8s.io/klog"
func TestFunc() {
klog.Infoln("Hello Go Modules!")
}
导入第三方包时,GO111MODULE=on,go get github.com/urfave/cli/v2 即可
3、参考