结构
.
├── deck.go
└── main.go
以下是每个.go
文件中的代码
main.go
package main
func main() {
cards := newDeck()
cards.print()
}
deck.go
package main
import "fmt"
type card struct {
value string
suit string
}
type deck []card
func newDeck() deck {
cards := deck{}
cardSuits := []string{"Spades", "Diamonds", "Hearts", "Clubs"}
cardValues := []string{"Ace", "Two", "Three"}
for _, suit := range cardSuits {
for _, value := range cardValues {
cards = append(cards, card{
suit: suit,
value: value,
})
}
}
return cards
}
func (d deck) print() {
for i, card := range d {
fmt.Printf("%d) %s of %s\n", i, card.value, card.suit)
}
}
为什么我不能运行main.go文件?请帮助TT
❯ go version
go version go1.14.3 darwin/amd64
❯ go run main.go
# command-line-arguments
./main.go:4:11: undefined: newDeck
发布于 2020-05-31 19:41:30
Golang中的模块由其父文件夹确定。跨模块,对象必须大写才能导出。这不是你的案子。
您的错误正处于编译阶段,这与gcc在找不到头文件时的情况类似。您必须告诉Go编译器搜索当前模块中的所有文件。
go run .
这告诉go在当前(.
)模块(文件夹)中包含所有文件。因为newDeck
位于不同的文件中,而且编译器只运行main,所以它找不到newDeck
。但是如果您运行所有文件,它将在deck.go
中搜索并找到func。
发布于 2020-06-01 05:06:08
go run main.go
只运行该文件。您需要执行go build .
并运行可执行文件。
https://stackoverflow.com/questions/62121513
复制相似问题