猿问

Go:来自库的函数调用

现在我真的很困惑。这是我的问题(Go 对我来说是新的):


第一文件:


// main.go

package main


import "./libraries/test"


func main() {


    test.foo()

}

第二个文件:


// test.go

package test


import "fmt"


func foo() {


    fmt.Println("foo")

}

我的结构是这样的:


main.go

   /libraries

        /test

           test.go

如果我编译此代码,我将收到以下错误消息:


./main.go:7: 不能引用未导出的名称 test.foo


./main.go:7: 未定义: test.foo


如果我更改foo到Foo任何地方,错误就会消失并且程序按预期工作。


料青山看我应如是
浏览 183回答 2
2回答

海绵宝宝撒

在 Go 中,符号的名称是用大写还是小写的驼峰写是一个重要的区别。这适用于函数,也适用于类型(如结构或接口)以及结构成员。您可以在Go 文档中阅读此内容(重点是我的):名称在 Go 中与在任何其他语言中一样重要。它们甚至具有语义效果:包外名称的可见性取决于其第一个字符是否为大写。这意味着您不能随意命名函数和类型。如果您需要从另一个模块调用此函数,则必须将其命名为Foo,而不是foo。

犯罪嫌疑人X

我想您还没有仔细阅读 Go 文档。所有以大写字母开头的名称都从它们的包中导出。不导出所有小写名称。https://golang.org/doc/https://golang.org/ref/spec#Exported_identifiers
随时随地看视频慕课网APP

相关分类

Go
我要回答