我是 GO 的新手,不了解一些基础知识 - 所以我真的不知道如何向谷歌询问。所以 我有一个包含 2 个文件的项目,它们都在 main 包中——src 的根目录。一个文件是main.go
package main
var (
node * NodeDTO
)
func main() {
node = &NodeDTO{ID: 1}
}
还有一个是dto.go with
package main
type NodeDTO struct {
ID int
}
所以 main.go 告诉我 - “undefined: NodeDTO”。 但是如果我在 main.go 附近创建一个 dir dto 并从那里使用我的 NodeDTO 就像
package main
import "another_tcp_server/dto"
var (
node * dto.NodeDTO
)
func main() {
node = &dto.NodeDTO{ID: 1}
}
没关系。请告诉我为什么会这样?
最佳答案
您似乎有:
$ ls
dto.go main.go
$ cat main.go
package main
var (
node * NodeDTO
)
func main() {
node = &NodeDTO{ID: 1}
}
$ cat dto.go
package main
type NodeDTO struct {
ID int
}
$
你似乎在运行:
$ go run main.go
# command-line-arguments
./main.go:4:12: undefined: NodeDTO
./main.go:8:13: undefined: NodeDTO
$
go run
的帮助说,除此之外:
$ go help run
usage: go run [build flags] [-exec xprog] package [arguments...]
Run compiles and runs the named main Go package.
Typically the package is specified as a list of .go source files,
but it may also be an import path, file system path, or pattern
matching a single known package, as in 'go run .' or 'go run my/cmd'.
您使用了一个 .go 源文件列表:go run main.go
。你列出了一个文件。您有两个文件:main.go
和 dto.go
。
使用完整的 .go 源文件列表:
$ go run main.go dto.go
$
关于在另一个文件中转到公共(public)结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51271886/