如何从 Go 模块导入特定的包?
How to import specific package from Go module?
Golang 1.11beta2 引入了对 Modules 的实验性支持。
我无法从 go 模块导入特定包。
这是构建应用程序时的错误:
$ go install
go: downloading github.com/udhos/modhello/modlib/lib v1.0.0
go: finding github.com/udhos/modhello latest
go: import "github.com/udhos/modhello/modapp" ->
import "github.com/udhos/modhello/modlib/lib": cannot find module providing package github.com/udhos/modhello/modlib/lib
为什么上面显示的导入失败?
这是来自模块 'modlib' 的包 'lib':
# repo: modhello
# module: modlib
# package: lib
$ cat modhello/modlib/lib/modlib.go
package lib
func Sum(a, b int) int {
return a + b
}
$ cat modhello/modlib/go.mod
module github.com/udhos/modhello/modlib
这是应用程序 'modapp' :
$ cat modhello/modapp/main.go
package main
import (
"log"
"github.com/udhos/modhello/modlib/lib"
)
func main() {
run(1, 2)
}
func run(a, b int) {
log.Printf("Sum(%d,%d) = %d", a, b, lib.Sum(a, b))
}
$ cat modhello/modapp/go.mod
module github.com/udhos/modhello/modapp
require github.com/udhos/modhello/modlib v1.0.0
git 存储库标记为 'modlib/v1.0.0'。这是发布模块版本的方式。
转到版本:
$ go version
go version go1.11beta2 linux/amd64
$ git --version
git version 2.18.0
这个疑问我也在golang-nuts: Host two distinct modules in one git repo?
上发帖了
go clean -modcache
解决了这个问题。
Golang 1.11beta2 引入了对 Modules 的实验性支持。
我无法从 go 模块导入特定包。
这是构建应用程序时的错误:
$ go install
go: downloading github.com/udhos/modhello/modlib/lib v1.0.0
go: finding github.com/udhos/modhello latest
go: import "github.com/udhos/modhello/modapp" ->
import "github.com/udhos/modhello/modlib/lib": cannot find module providing package github.com/udhos/modhello/modlib/lib
为什么上面显示的导入失败?
这是来自模块 'modlib' 的包 'lib':
# repo: modhello
# module: modlib
# package: lib
$ cat modhello/modlib/lib/modlib.go
package lib
func Sum(a, b int) int {
return a + b
}
$ cat modhello/modlib/go.mod
module github.com/udhos/modhello/modlib
这是应用程序 'modapp' :
$ cat modhello/modapp/main.go
package main
import (
"log"
"github.com/udhos/modhello/modlib/lib"
)
func main() {
run(1, 2)
}
func run(a, b int) {
log.Printf("Sum(%d,%d) = %d", a, b, lib.Sum(a, b))
}
$ cat modhello/modapp/go.mod
module github.com/udhos/modhello/modapp
require github.com/udhos/modhello/modlib v1.0.0
git 存储库标记为 'modlib/v1.0.0'。这是发布模块版本的方式。
转到版本:
$ go version
go version go1.11beta2 linux/amd64
$ git --version
git version 2.18.0
这个疑问我也在golang-nuts: Host two distinct modules in one git repo?
上发帖了go clean -modcache
解决了这个问题。