GO111MODULE 及 Go 模块

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、参考

https://zhuanlan.zhihu.com/p/417246469

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值