GO (Golang) 在同一目录中看不到其他 .go 文件
GO (Golang) does not see other .go files inside the same dir
问题: 从其他包导出的函数未定义,在 main.go
内部不可见
解决方案:
将 main.go 放入 单独的文件夹 (将其命名为 app 或 main,不会事情)。只有 go.mod 保留在根目录中,文件夹“app”和“package1”“package2”等。此后 VSCode 在保存时自动添加导入,我没有甚至需要做任何事情。如果我在 root 中有 main.go 那么它就不起作用(大部分时间),因为它不会“看到”来自其他模块(未定义)的函数。
我找到了解决方案 HERE,(请参阅 davidbost 的 post)。 Andrey Dyatlov 在此页面上的解决方案也工作了一段时间,然后停止工作。
我大概花了 10 个小时的尝试、错误和搜索。
希望以上对大家有所帮助。谢谢大家!
_______________________________________________________________________
原问题描述:
Windows 10,Go 1.17,带有 Go 扩展的 VS Code。
你好,我是 Go 的新手,由于以下问题,我无法学习单个教程。当我在与 main.go 相同的目录(或同一目录的文件夹内)创建另一个 .go 文件时,我收到错误提示 .\main.go:7:2:未定义:SayHi
main.go 文件:
package main
import "fmt"
func main() {
fmt.Println("1st")
SayHi()
}
/something 文件夹中的另一个 .go 文件:
package something
import "fmt"
func SayHi() {
fmt.Println("Hi!")
}
运行 go 运行 main.go 导致未定义的 SayHi 错误
我用谷歌搜索了这个问题,但没有成功。
$ go build // 给出同样的错误
$ go install // 给出同样的错误
不使用其他文件中的函数 $ go 运行 main.go 运行s just fine.
我还尝试 go init 添加我的 github 目录,但没有成功(通过遵循教程)。我也用go 运行 init试过官方的starting guide,导出的Capitalized函数还是未定义。更糟糕的是,SayHi 函数的自动完成功能有效,但由于未定义而无法编译。
我已将 PATH 设置为 C:\Users\xxx\go 并将我的文件放在那里,我也尝试使用 C:\Go 但没有成功,它仍然未定义。我要放弃 Go...
在不知道项目当前状态的情况下很难修复项目。请尝试从头开始:
在 $GOPATH
:
之外的任何地方为您的项目创建一个目录
mkdir myproject
cd myproject
运行 以下命令创建一个 go.mode
文件,描述您的项目(模块)及其依赖项;让我们调用模块 github.com/me/myproject
:
go mod init github.com/me/myproject
创建第一个文件;我们称它为 main.go
:
package main
import "fmt"
import "github.com/me/myproject/something"
func main() {
fmt.Println("1st")
something.SayHi()
}
为名为 github.com/me/myproject/something
的包创建一个目录:
mkdir something
创建路径为 something/something.go
的文件:
package something
import "fmt"
func SayHi() {
fmt.Println("Hi!")
}
从 myproject
目录,运行 go build
.
启动您的第一个 Go 程序:
./myproject
1st
Hi!
问题: 从其他包导出的函数未定义,在 main.go
内部不可见解决方案: 将 main.go 放入 单独的文件夹 (将其命名为 app 或 main,不会事情)。只有 go.mod 保留在根目录中,文件夹“app”和“package1”“package2”等。此后 VSCode 在保存时自动添加导入,我没有甚至需要做任何事情。如果我在 root 中有 main.go 那么它就不起作用(大部分时间),因为它不会“看到”来自其他模块(未定义)的函数。
我找到了解决方案 HERE,(请参阅 davidbost 的 post)。 Andrey Dyatlov 在此页面上的解决方案也工作了一段时间,然后停止工作。
我大概花了 10 个小时的尝试、错误和搜索。 希望以上对大家有所帮助。谢谢大家!
_______________________________________________________________________
原问题描述:
Windows 10,Go 1.17,带有 Go 扩展的 VS Code。
你好,我是 Go 的新手,由于以下问题,我无法学习单个教程。当我在与 main.go 相同的目录(或同一目录的文件夹内)创建另一个 .go 文件时,我收到错误提示 .\main.go:7:2:未定义:SayHi
main.go 文件:
package main
import "fmt"
func main() {
fmt.Println("1st")
SayHi()
}
/something 文件夹中的另一个 .go 文件:
package something
import "fmt"
func SayHi() {
fmt.Println("Hi!")
}
运行 go 运行 main.go 导致未定义的 SayHi 错误
我用谷歌搜索了这个问题,但没有成功。
$ go build // 给出同样的错误
$ go install // 给出同样的错误
不使用其他文件中的函数 $ go 运行 main.go 运行s just fine.
我还尝试 go init 添加我的 github 目录,但没有成功(通过遵循教程)。我也用go 运行 init试过官方的starting guide,导出的Capitalized函数还是未定义。更糟糕的是,SayHi 函数的自动完成功能有效,但由于未定义而无法编译。
我已将 PATH 设置为 C:\Users\xxx\go 并将我的文件放在那里,我也尝试使用 C:\Go 但没有成功,它仍然未定义。我要放弃 Go...
在不知道项目当前状态的情况下很难修复项目。请尝试从头开始:
在
之外的任何地方为您的项目创建一个目录$GOPATH
:mkdir myproject cd myproject
运行 以下命令创建一个
go.mode
文件,描述您的项目(模块)及其依赖项;让我们调用模块github.com/me/myproject
:go mod init github.com/me/myproject
创建第一个文件;我们称它为
main.go
:package main import "fmt" import "github.com/me/myproject/something" func main() { fmt.Println("1st") something.SayHi() }
为名为
github.com/me/myproject/something
的包创建一个目录:mkdir something
创建路径为
something/something.go
的文件:package something import "fmt" func SayHi() { fmt.Println("Hi!") }
从
myproject
目录,运行go build
.启动您的第一个 Go 程序:
./myproject 1st Hi!