gpt4 book ai didi

go - 如何在GO中导入本地包

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

我正在创建一个网络 API。

我在同一个文件 main.go 中构建了我的服务器和 Controller 。

我创建了另一个名为 model.go 的文件,我在其中声明了一个 Person 结构。

我无法在 main.go 中导出我的模型。

每次运行或构建时都会出现此错误:

can't load package: package .: found packages main 

有没有办法导出 func/const 并将它们导入到具有良好路径的文件中? (就像 JavaScript 的工作方式一样)。

这是我的树:

myapp/
--main.go/
--model.go/

这是我的导入:ma​​in.go

package main

import (
"encoding/json"
"log"
"net/http"

"./person"
"github.com/gorilla/mux"
)

model.go

package person

type Person struct {
ID string `json:"id,omitempty"`
Firstname string `json:"firstname,omitempty"`
Lastname string `json:"lastname,omitempty"`
Address *Address `json:"address,omitempty"`
}

var people []Person

最佳答案

在同一文件夹中,您必须具有相同的包名称。

当 golang 处理导入时,它会将同一目录下的所有文件作为一个整体加载。

鉴于您提供的代码,model.go 包名称必须是 main。

你根本不需要从 main.go 导入 model.go。

现在,有一点需要了解。当您运行 go build/run/install 时,它会将传递的文件列表作为参数来初始化构建过程。

在您当前的设置中,这意味着您必须将组成主包的所有文件传递给命令行,否则,它们将被忽略,在您的情况下,这意味着构建失败。

在纯文本中,您将执行 go build *.go 而不是 go build main.go

将来如果你想避免构建多个源文件,你应该有一个唯一的main.go,里面有最少的代码来初始化你正在编写的程序。因此,model.go 的内容将存在于不同的包(目录)中,并将通过 import xyz 语句导入到 main 中。

最后,import 指令的导入路径不能相对于当前工作目录。它们都是基于 GOPATH/src 的。

关于go - 如何在GO中导入本地包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47812025/

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