在Go语言中,我尝试创建一个简单的数据库连接。我需要导入
我在使用VS Code。在
请注意,在执行
[注意:我执行了 'go mod vendor' 命令,但没有任何变化]
有人可以告诉我为什么我无法导入gorilla/mux或pq。
我还需要做什么吗?
(请解释一下这是什么意思?在go.mod中明确要求,但在vendor/modules.txt中未标记为明确要求)
gorilla/mux
,但是我无法成功导入。我在使用VS Code。在
cd
到我的项目目录后,我创建了main.go
并执行了以下命令:
go get -u github.com/gorilla/mux
下面是main.go
的代码:package main
import (
"database/sql"
"fmt"
"github.com/gorilla/mux"
_ "github.com/lib/pq"
)
const (
host = "localhost"
port = 3000
user = "postgres"
password = "postgres"
dbname = "test1"
)
func main() {
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Successfully connected!")
}
请注意,在执行
go get -u github.com/gorilla/mux
命令后,终端会显示:C:\Go\src\github.com\IamFrost\go-rest-api>go get -v -u github.com/gorilla/mux
go: golang.org/x/text upgrade => v0.3.2
go: golang.org/x/crypto upgrade => v0.0.0-20200429183012-4b2356b1ed79
go: golang.org/x/sys upgrade => v0.0.0-20200430082407-1f5687305801
go: golang.org/x/net upgrade => v0.0.0-20200425230154-ff2c4b7c35a0
go: downloading golang.org/x/sys v0.0.0-20200430082407-1f5687305801
golang.org/x/sys/cpu
golang.org/x/crypto/chacha20poly1305
crypto/tls
看,我在小地图中没有其他语法错误。当我把鼠标放在红色标记处时,它的悬停文本对我来说很有趣:
1)已导入但未使用
但下一行
2)没有为导入github.com/gorilla/mux的包
哈哈,这不是违背了1)吗?
请有人解释一下为什么会出现这种情况
然而,
在终端中使用go build
后
这里是终端:
C:\Go\src\github.com\IamFrost\go-rest-api>go build
go: inconsistent vendoring in C:\Go\src:
github.com/gorilla/mux@v1.7.4: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/lib/pq@v1.4.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
golang.org/x/crypto@v0.0.0-20200429183012-4b2356b1ed79: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
golang.org/x/net@v0.0.0-20200425230154-ff2c4b7c35a0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
golang.org/x/sys@v0.0.0-20200430082407-1f5687305801: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
golang.org/x/crypto@v0.0.0-20200128174031-69ecbb4d6d5d: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
golang.org/x/net@v0.0.0-20191126235420-ef20fe5d7933: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
golang.org/x/sys@v0.0.0-20200201011859-915c9c3d4ccf: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
run 'go mod vendor' to sync, or use -mod=mod or -mod=readonly to ignore the vendor directory
[注意:我执行了 'go mod vendor' 命令,但没有任何变化]
有人可以告诉我为什么我无法导入gorilla/mux或pq。
我还需要做什么吗?
(请解释一下这是什么意思?在go.mod中明确要求,但在vendor/modules.txt中未标记为明确要求)
go mod vendor
? - Volker