额外说明:下面所给出的答案,虽有未采纳.但其内容或者思路值得借鉴.
环境说明
IDE:VSCode Version:1.36.1
GO Version : go1.12.3 darwin/amd64
GOPATH: /Users/xxx/go:/Users/xxx/Desktop/xxx
本Demo所在目录:/Users/xxx/Desktop/redis-go;没有在GOPATH中,没有设置GO111MODULE
Demo 中使用了go mudule,所以在 workspace setting中把 go.inferGopath 设置为 false
代码组织
---src
---hosts
--- host.go
---main
--- main.go
---redisclient
--- redisC
--- go.mod
--- go.sum
- src目录,go.mod,go.sum 在同一级
- hosts是自定义包
- redisclient包是对redis的一些设置
错误内容
build Stephanie.io/main:cannot load hosts: cannot find module providing package hosts
整理不易,如果这个问题对你用,请点击 左上方 向上箭头,谢谢!;问题居然被踩了.... o(╥﹏╥)o
期待答案
- 给出思路与参考内容
- 自己的使用经验
各个文件代码
- host.go
package hosts
import (
"fmt"
)
// SayHello ....
func SayHello(){
fmt.Println("Hello!")
}
- main.go
package main
import (
"hosts"
)
func main() {
hosts.SayHello()
}
- redisC.go
`引入这个包为了 练习使用go mudule引入并使用了redis这个第三方包,在这里不要太在意内容`
package rediscilent
import (
"github.com/gomodule/redigo/redis"
"log"
)
// OpenRedisDial ...
func OpenRedisDial()(conn redis.Conn, err error) {
//address can connect
c,err := redis.Dial("tcp", "192.168.0.248:6379")
if err != nil {
log.Fatalln(err)
}
return c,err;
}
- go.mod
module stephanie.io
go 1.12
require github.com/gomodule/redigo v2.0.0+incompatibl
注意:module 名为 Stephanie.io
在这里go.sum的内容没有多大意义所以内容就不贴出来了.
思路:
通过错误信息查询源码,针对到源码所在对应的结构体,通过godoc注释文档和语义化信息可以知道大概是导入包出错.
检查报错文件所对应的的导入包项,是由于go module导入包需要加入module前缀,
因此正确的做法应该是:
main.go
点击查看解决过程Gif演示