我正在用1.12.1版创建一个go项目.

can't load package: package github.com/marvincaspar/go-example: unknown import path "github.com/marvincaspar/go-example": cannot find module providing package github.com/marvincaspar/go-example

这只适用于go cleango rungo build个工程.

下面是主代码的文件夹 struct :

.
├── Makefile
├── cmd
│   └── server
│       └── main.go
├── go.mod
├── go.sum
└── pkg
    └── storage
        └── mysql
            └── storage.go

下面是go.mod文件的外观:

module github.com/marvincaspar/go-example
go 1.12

require (
    github.com/go-sql-driver/mysql v1.4.1
)

最后是main.go文件:

package main

import (
    "fmt"
    "os"

    "github.com/marvincaspar/go-example/pkg/storage/mysql"
)

func main() {
    if err := run(); err != nil {
        fmt.Fprintf(os.Stderr, "%v", err)
        os.Exit(1)
    }
}

func run() error {
    // init storage
    s := mysql.NewStorage()
    // do some other stuff...
}

知道我做错了什么吗?

推荐答案

Go build/install试图在根目录中找到主程序包,但没有判断子目录(cmd/server).因此,您得到的包未找到错误.

要正确构建代码,您可以运行:

go build github.com/marvincaspar/go-example/cmd/server

同样,要运行您的项目,您必须提供模块名/main-package-path:

go run github.com/marvincaspar/go-example/cmd/server

通过将模块名/路径与主程序包一起提供,可以以相同的方式执行Go Clean

go clean github.com/marvincaspar/go-example/cmd/server

GOPATH="$(pwd)/vend或:$(pwd)" GOBIN="$(pwd)/bin" go clean github.com/marvincaspar/go-example/cmd/server 

However, as per https://blog.learngoprogramming.com/code-或ganization-tips-with-packages-d30de0d11f46, just put your source files into your project’s root. It’s better that way.

Go相关问答推荐

如何在Go中使用a-h/tempson渲染预格式的内容?

Go - os.userHomeDir()在WSL上返回C:\Users\

错误.如果它包含切片,则返回FALSE

通过渠道和goroutines增值1000倍

";无效的复制因子;融合Kafka Go客户端

在golang中以JSON格式获取xwwwformurlencoded请求的嵌套键值对

使用Goldmark在golang中添加ChildNode会导致堆栈溢出

Golang prometheus:有没有办法衡量出站请求的指标?

同一文件上的多个 Arrow CSV 阅读器返回 null

将文本文件放入切片然后进行比较

如何判断范围内的字段?

拆分文本并按空格获取字符串数组,如果文本长度超过 500,则获取字符串数组

查找、解析和验证邮箱地址

Go:等待多个通道的性能损失

从golang中的url加载图像

正确编码 JWT

防止在 Go 公用文件夹中列出目录

手动将 OpenTelemetry 上下文从 golang 提取到字符串中?

如何解决在mac m1中运行gcc失败退出状态1?

AWS EKS 上的 Golang REST API 部署因 CrashLoopBackOff 而失败