gpt4 book ai didi

在同一文件夹中导入 go 文件

转载 作者:IT老高 更新时间:2023-10-28 12:58:22 26 4
gpt4 key购买 nike

我在将本地 go 文件导入另一个 go 文件时遇到困难。

我的项目结构如下所示

-samplego
--pkg
--src
---github.com
----xxxx
-----a.go
-----b.go
--bin

我正在尝试在 b.go 中导入 a.go。我尝试了以下,

import "a"
import "github.com/xxxx/a"

这些都不起作用..我知道我必须干预 GOPATH,但我做错了。目前我的 GOPATH 指向 samplego(/workspace/samplego)。我收到以下错误

cannot find package "a" in any of:
/usr/local/go/src/pkg/a (from $GOROOT)
/workspace/samplego/src/a (from $GOPATH)

另外,当这些源文件被导入另一个项目/模块时,GOPATH 是如何工作的?那么本地进口会是一个问题吗?在这种情况下,最佳实践是什么 - 是否在模块中只有一个 go 文件(带有相关测试)?

最佳答案

目录中任意数量的文件都是一个包;在一个文件中声明的符号可供其他文件使用,无需任何 import 或限定符。所有文件都需要在顶部使用相同的 package foo 声明(否则您将收到来自 go build 的错误)。

您确实需要将 GOPATH 设置为您的 pkgsrcbin 目录所在的目录。这只是一个偏好问题,但通常为所有应用(有时是 $HOME)拥有一个工作区,而不是每个应用一个工作区。

Github 路径通常是 github.com/username/reponame(不仅仅是 github.com/xxxx)。所以如果你想拥有 main 和另一个包,你最终可能会在 workspace/src 下做一些事情,比如

github.com/
username/
reponame/
main.go // package main, importing "github.com/username/reponame/b"
b/
b.go // package b

请注意,您始终使用完整的 github.com/... 路径导入:工作空间中不允许相对导入。如果您厌倦了键入路径,请使用 goimports。如果您使用 go run,是时候切换到 go build:run 不能很好地处理多文件 mains,我没有费心去测试,但听说(来自 Dave Cheney here)go run 不会重建脏依赖。

听起来你至少尝试过将 GOPATH 设置为正确的东西,所以如果你仍然卡住,也许包括你如何设置环境变量(命令等)以及你运行了什么命令以及什么发生错误。 Here are instructions on how to set it (and make the setting persistent) under Linux/UNIXhere is the Go team's advice on workspace setup .也许两者都没有帮助,但是如果您感到困惑,请看一下并至少指出哪个部分让您感到困惑。

关于在同一文件夹中导入 go 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942150/

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