GO:另一个文件(同一个包)中的对象抛出未定义的错误

GO:另一个文件(同一个包)中的对象抛出未定义的错误,go,Go,文件:$GOPATH/src/scratch\u go\u code/main/main.go package main import "fmt" func main() { fmt.Println("Hello World") cloud := Cloud{} cloud.Say() } 文件$GOPATH/src/scratch\u go\u code/main/cloud.go package main import "fmt" type Cloud st

文件:$GOPATH/src/scratch\u go\u code/main/main.go

package main

import "fmt"

func main() {
    fmt.Println("Hello World")
    cloud := Cloud{}
    cloud.Say()
}
文件$GOPATH/src/scratch\u go\u code/main/cloud.go

package main

import "fmt"

type Cloud struct{}

func (Cloud) Say() {
    fmt.Println("I'm a cloud in the main package")
}
运行:开始安装scratch\u go\u代码/…&&开始运行main/main.go 抛出:


你知道为什么吗?

你必须使用
go build
或者将两个文件都传递给
go run
,例如:

go run main/*.go
使用go build:

cd scratch_go_code/ && go build && ./scratch_go_code 

您必须使用
go build
或将这两个文件传递到
go run
,例如:

go run main/*.go
使用go build:

cd scratch_go_code/ && go build && ./scratch_go_code 
这应该行得通

go build scratch_go_code/main
这应该行得通

go build scratch_go_code/main

你能给我一个关于go build的例子吗?我试着去构建scratch\u go\u code/…&&go run main/main.go-这不起作用……你能给我一个go构建的例子吗?我试着去构建scratch\u go\u code/…&&go run main/main.go-这不起作用…供将来参考:不要将包称为“main”(即
package main
可以,但不要将包含的文件夹命名为
main/
)供将来参考:不要将包称为“main”(即
package main
可以,但不要将包含的文件夹命名为
main//code>)