go-module调用本地包

go module模式调用本地包

一、本地有两个package

1、目录结构

--demo
  --p1
  	--p11
  		--p11.go
  	--main.go
  	--go.mod
  --p2
  	--p2.go
  	--go.mod

2、p2.go源码

package p2

import "fmt"
const Name  ="bob"
// New 首字母大写,供外部调用
func New()  {
	fmt.Println("p2 new")
}

3、p11.go源码

package p11

import ("fmt"
       "p2"
       )
// do 外部调用
func Do()  {
	fmt.Println("p11 Do Do")
  fmt.Println(p2.Name)
  
}

4、main.go源码

package main

import ("fmt"
		"p1/p11"
		"p2"
)
func main() {
	fmt.Println("main")
	p11.Do()
	p2.New()
}

二、p1,p2,p11之间的关系

p1,p2是两个不同的项目

P1,p11同一项目

三、要求p1的main.go调用p2 package中的方法

因为p1,p2不再同一项目下,所以有各自的go.mod文件,使用replace和require方法

replace的方法就是告诉 “项目中引用的依赖包所在的本地实际位置”

1、p1的go.mod文件内容

module p1

go 1.14

require p2 v0.0.0

replace p2 => ../p2

2、p2的go.mod文件内容

module p2

go 1.14

四、p1调用p11包内的方法

无需对p1的go.mod文件修改,在main函数中调用的时候,注意路径是“项目/包”的结构即可

五、p11调用p2中的方法/常量/变量

就跟p1调用p2中的方法一样,因为p11是p1的包内文件,整个p1文件夹(或称为项目)的包依赖都是有项目的根目录下的go.mod管理。

你可能感兴趣的:(go)