首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从其他文件调用函数

如何从其他文件调用函数
EN

Stack Overflow用户
提问于 2020-05-31 19:36:28
回答 2查看 258关注 0票数 1

结构

代码语言:javascript
代码运行次数:0
运行
复制
.
├── deck.go
└── main.go

以下是每个.go文件中的代码

main.go

代码语言:javascript
代码运行次数:0
运行
复制
package main

func main() {
    cards := newDeck()
    cards.print()
}

deck.go

代码语言:javascript
代码运行次数:0
运行
复制
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

代码语言:javascript
代码运行次数:0
运行
复制
❯ go version
go version go1.14.3 darwin/amd64

❯ go run main.go
# command-line-arguments
./main.go:4:11: undefined: newDeck
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-31 19:41:30

Golang中的模块由其父文件夹确定。跨模块,对象必须大写才能导出。这不是你的案子。

您的错误正处于编译阶段,这与gcc在找不到头文件时的情况类似。您必须告诉Go编译器搜索当前模块中的所有文件。

go run .

这告诉go在当前(.)模块(文件夹)中包含所有文件。因为newDeck位于不同的文件中,而且编译器只运行main,所以它找不到newDeck。但是如果您运行所有文件,它将在deck.go中搜索并找到func。

票数 3
EN

Stack Overflow用户

发布于 2020-06-01 05:06:08

go run main.go只运行该文件。您需要执行go build .并运行可执行文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62121513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档