在 Go 中编写全局函数——比如 append()

问题很简单——我如何在 golang 中实现一个独立于包的全局函数。

ID,如果我在名为 core 的包中有一个函数,那么从另一个包中我需要 core.Function() 来调用该函数。但是我在 go 实现中有一些函数,比如 - make(), append() 可以在没有任何导入的情况下直接在任何包中使用切片。如果我想写这样的函数,这样做的方法是什么?如果可能的话,我如何编写这样的任何函数。


繁华开满天机
浏览 411回答 2
2回答

繁星coding

不可能完全按照您的意愿去做,但您可以通过使用点导入来接近它。例如,如果您点导入fmt包,您可以拼写fmt.Println为Println:package mainimport . "fmt"func main() {    Println("Hello, playground")}游乐场:http : //play.golang.org/p/--dWV6PHYA。

三国纷争

简短的回答是:你不能。Go 有内置函数和类型,但即使是语言设计者也尽量将它们的数量保持在最低限度,并尽可能避免它们。例如,有一个内置printf函数,但建议fmt.Printf改用,因为内置函数“不能保证留在语言中”。虽然每次使用函数时都必须预先加上包名可能看起来很麻烦,但它有其明显的优点(使代码更易于阅读,避免名称冲突)并且实际上并没有听起来那么糟糕,如果包设计者遵循这些指导方针在这篇博文中的“命名包内容”中进行了描述。示例:Regexp要从模式字符串创建对象,请调用regexp.Compile(),而不是regexp.CompileRegexp()- 由于在调用函数时使用包名称,因此可以缩短函数名称。如果您按照 Ainar-G 的建议使用“点导入”,这当然会丢失。然后你就会有Compile(),这可能会令人困惑(“编译什么?”)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go