go mod 下调用本地包

本地包位于同一个项目下

要调用的本地包位于包内,但不是同一个包名

目录结构
D:.
│  go.mod
│  main.go
│
└─mymod
        sayhimod.go

其中 sayhimod.go 的包名为 mymodmain.go 的包名是 main(和 go.mod 中的 module 相同)

sayhimod.go

package mymod

import "fmt"

func SayHi() {
    
    
	fmt.Println("Hi")
}

go.mod

module main

go 1.16

main.go

package main

import (
	// 本地包的引用路径:外层文件的 go.mod 的名字/子目录的包名
	"main/mymod"
)

func main() {
    
    
	mymod.SayHi()
}

本地包与项目包同级

目录结构
D:.
├── testmod
│   ├── go.mod
│   └── main.go
└── testmod2
    ├── go.mod
    └── mod2.go

其中 testmod2 是未上传到任何网站和远程库的本地包

/testmod2/go.mod

module testmod2

go 1.16

/testmod2/mod2.go

package testmod2

import "fmt"

func SayHi() {
    
    
	fmt.Println("Hi")
}

/testmod/go.mod

module main

go 1.16

require "xxx.com/xxxfile/testmod2" v0.0.0
replace "xxx.com/xxxfile/testmod2" => "../testmod2"

因为 testmod2 并未上传到任何网站(如 github.com),所以我们通过 replace 的方式来引用本地包,更多关于 go mod 的知识,点击这里

/testmod/main.go

package main

import (
	"xxx.com/xxxfile/testmod2"
)

func main() {
    
    
	// 通过包名来调用包内的方法
	testmod2.SayHi() // Hi
}

参考

使用go module导入本地包

猜你喜欢

转载自blog.csdn.net/qq_34902437/article/details/120860830