在Golang 1.14环境下无法构建/运行项目的问题

在Golang 1.14环境下无法构建/运行项目的问题

$ go version
go version go1.14 darwin/amd64
$cat go.mod
module go-test

go 1.14

我有一个示例项目,其文件夹结构如下: go-test |- src |— server |----- server.go |— test |----- test.go go.mod go.sum

server.go 属于 main 包,而 test.go 属于 test 包。 我使用 go mod init go-test 创建了这个项目,并尝试构建和运行它。

第一个问题是我无法在 server.go 中导入 test 文件夹:

import (
test "go-test/test
)

我无法构建和运行该项目:

    user-MacBook-Pro:src $ go build server/server.go
    server/server.go:6:2: package go-test/test is not in GOROOT (/usr/local/opt/go/libexec/src/go-test/test)

    user-MacBook-Pro:src $ go install
    can't load package: package .: no Go files in /Users/c****/go-test/src

    user-MacBook-Pro:src $ go get server
    go get server: package server is not in GOROOT (/usr/local/opt/go/libexec/src/server)

    user-MacBook-Pro:src $ go get server/server.go
    go get server/server.go: malformed module path "server/server.go": missing dot in first path element

    user-MacBook-Pro:src$ go get . server/server.go
    go get .: path /Users/c****/go-test/src is not a package in module rooted at /Users/c****/go-test

更多关于在Golang 1.14环境下无法构建/运行项目的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

你的 go.mod 文件中模块的名称是什么?

更多关于在Golang 1.14环境下无法构建/运行项目的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


module go-test

go 1.14

在Go 1.14中使用模块时,项目结构需要调整。模块项目不应使用src目录,而应遵循标准的包布局。以下是正确的项目结构:

go-test/
├── go.mod
├── go.sum
├── server/
│   └── server.go
└── test/
    └── test.go

server.go:

package main

import (
    "fmt"
    "go-test/test"
)

func main() {
    fmt.Println("Server starting...")
    test.SayHello()
}

test.go:

package test

import "fmt"

func SayHello() {
    fmt.Println("Hello from test package")
}

构建和运行命令:

# 从项目根目录构建
$ go build -o server ./server

# 运行
$ ./server

# 或者直接运行
$ go run ./server

如果需要在src目录中工作,修改go.mod中的模块路径:

module go-test/src

然后导入路径改为:

import "go-test/src/test"

但推荐使用第一种标准结构。

回到顶部