[Go菜牛系列]go module与本地包导入

场景需求

假设当前同一个项目中有多个模块,每个模块有单独的go.mo, 结构如下所示:

├── package1
│   ├── go.mod
│   └── main.go
└── package2
    ├── go.mod
    ├── hello
    │   └── hello.go
    └── package2.go
  • package2包相关代码
// package2/package2.go
package package2

import "fmt"

func New(){
	fmt.Println("package2.New")
}
// package2/hello/hello.go
package hello

import "fmt"

func New2(){
	fmt.Println("package2.hello.New2")
}
// package2/go.mod
module package2

go 1.14

如果package1中的main.go需要导入package2的package2.go或hello/hello.go, 应该怎么实现呢?

package1相关代码

// package1/main.go
package main

import (
	"fmt"
	"package2"
	"package2/hello"
)
func main() {
	package2.New()
	hello.New2()
	fmt.Println("package1.main")
}
module package1

go 1.14

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

测试结果

$ cd package1
$ go run main.go
package2.New
package2.hello.New2
package1.main

关键点在于package1/go.mod中的

require "package2" v0.0.0               // 表示依赖package2包
replace "package2" => "../package2"     // package2包替换为本地路径相对目录所在的包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值