在另一个文件中进入公共结构

时间:2018-07-10 18:25:03

标签: go

我对GO还是很陌生,不了解一些基本知识-所以我真的不知道如何向Google询问。所以 我有一个包含2个文件的项目,两个文件都位于包main中-src的根。一个文件是main.go

package main

var (
    node * NodeDTO
)

func main() {
    node = &NodeDTO{ID: 1}
}

另一个是dto.go与

package main

type NodeDTO struct {
    ID int
}

所以main.go告诉我-“未定义:NodeDTO”。 但是,如果我在main.go附近创建dir dto并从那里使用NodeDTO

package main

import "another_tcp_server/dto"

var (
    node * dto.NodeDTO
)

func main() {
    node = &dto.NodeDTO{ID: 1}
}

没关系。请告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分: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.godto.go

使用.go源文件的完整列表:

$ go run main.go dto.go
$