gpt4 book ai didi

go - 无法导入自定义 go 模块

转载 作者:数据小太阳 更新时间:2023-10-29 03:42:57 25 4
gpt4 key购买 nike

这是我的主文件(server.go):

package main

import (
"net/http"
"routes"
)

func main() {
http.HandleFunc("/", routes.Handler)
http.ListenAndServe(":8000", nil)
}

我的路由模块在同一目录中:

package routes

func Handler(w http.ResponseWriter, r *http.Request) {
// stuff...
}

当我运行 go run server.go 时出现此错误:

server.go:6:5: cannot find package "routes" in any of:
/usr/local/Cellar/go/1.6/libexec/src/routes (from $GOROOT)
~/server/src/routes (from $GOPATH)

当我将 routes.go 中的代码放入我的 server.go 文件时,它运行良好。我无法导入模块。我已经尝试将 $GOPATH 变量设置为我的当前目录,我已经尝试重新安排我的项目目录以模仿一个 here .我的选择不多了。奇怪的是,一种被广泛采用的语言却没有如此糟糕的文档来说明如何做一些几乎所有其他语言都相对容易的事情。请帮我弄清楚我做错了什么。

更新:

这是 go env 的输出

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/me/server"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.6/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.6/libexec/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT="1"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

最佳答案

How To Write Go Code ”文章是推荐的起点,就在 Getting Started 上解释这一点的页面。 (感谢@elithrar)

Peter Bourgon 有一个 good write up在结构良好的 Go 应用程序上。

您应该将 routes 包放在 routes 文件夹中,或者如果您的主包在 routes 文件夹中,您可以有一个 lib 该文件夹中包含您实际的 routes 包的文件夹。

文件夹结构的原因是由于 go import 语句的工作方式。考虑到导入的工作方式,在同一个文件夹中启用多个包是不明确的。

关于go - 无法导入自定义 go 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com