gpt4 book ai didi

go - 找不到包 "api/handlers"

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

好的,这个问题之前已经有人问过,我相信我已经查看了所有这些问题并测试了答案,但我将解释每个问题为何与我的情况不符。我可能错过了其中一个的答案,但我阅读了每一个并试图看看它是否适合我的情况

How to import local packages in go?我相信我的导入遵循答案的结构

Go build: "Cannot find package" (even though GOPATH is set)我不确定这个是否完全相关,但我认为这不是同一个错误。

Golang - Why can't I import local package in GOPATH/src/project but can in home directory?我的导入路径不是相对的,所以这个问题不相关。

我的错误很简单:

cannot find package "api/handlers" in any of: 
C:\Go\src\api\handlers (from $GOROOT)
C:\Projects\Go\src\api\handlers (from $GOPATH)`

我的项目结构如下:

src
|
--api
|
-- index.go
-- repo.go
|
github.com
|
main.go

环境变量:

$GOPATH : C:\Projects\Go
$GOROOT : C:\Go\

index 和 repo.go 都有相同的包名、导入和一个空函数:

package handlers

import (
"net/http"
)

func indexHandler(w http.ResponseWriter, r *http.Request) {
}

我的 main.go:

package main

import (
"fmt"
"log"
"net/http"
"api/handlers"
)

func main() {
http.HandleFunc("/api/index", handlers.indexHandler)
http.HandleFunc("/api/repo", handlers.repoHandler)

log.Fatal(http.ListenAndServer("localhost:8080", nil))
}

最佳答案

发生的事情是 import api/handlers 正在寻找文件夹 api 中的文件夹 handlers,然后在内容中寻找包名。在 api 中添加一个 handlers 文件夹,并将 index.gorepo.go 移动到该文件夹​​中。或者只需将这些文件中的包名称更改为 api,然后执行 import api

关于您的评论:

cannot refer to unexported name handlers.indexHandler

为了能够使用主包中的函数indexHandler,您应该将其重命名为IndexHandler。在 go 中,为了能够被其他包访问,名称需要以大写字母开头。

关于go - 找不到包 "api/handlers",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47277874/

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