go语言基础之包和自定义包与main包

Posted 进击的qing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言基础之包和自定义包与main包相关的知识,希望对你有一定的参考价值。

1、包

所有 Go 语言的程序都会组织成若干组文件,每组文件被称为一个包。这样每个包的代码都可以作为很小的复用单元,被其他项目引用。

一个包的源代码保存在一个或多个以.go为文件后缀名的源文件中,通常一个包所在目录路径的后缀是包的导入路径。

 

2、自定义包

对于一个较大的应用程序,我们应该将它的功能性分隔成逻辑的单元,分别在不同的包里实现。我们创建的的自定义包最好放在GOPATH的src目录下(或者GOPATH src的某个子目录)。

 在Go语言中,代码包中的源码文件名可以是任意的。但是,这些任意名称的源码文件都必须以包声明语句作为文件中的第一行,每个包都对应一个独立的名字空间:

package test

包中成员以名称⾸字母⼤⼩写决定访问权限:

1.public: ⾸字母 ⼤写,可被包外访问

2.private: ⾸字母 ⼩写,仅包内成员可以访问

注意:同一个目录下不能定义不同的package。

Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头)

注意这个访问权限的规则是跨包,包内都是”共有”的。

 

3、main

在 Go 语言里,命名为 main 的包具有特殊的含义。 Go 语言的编译程序会试图把这种名字的包编译为二进制可执行文件。所有用 Go 语言编译的可执行程序都必须有一个名叫 main 的包。一个可执行程序有且仅有一个 main 包。

当编译器发现某个包的名字为 main 时,它一定也会发现名为 main()的函数,否则不会创建可执行文件。 main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明 main 包的代码所在的目录的目录名作为二进制可执行文件的文件名。

 

以上是关于go语言基础之包和自定义包与main包的主要内容,如果未能解决你的问题,请参考以下文章

1Go语言之包与gomod

1Go语言之包与gomod

Go语言基础之包的概念

Go语言基础之包

Go语言基础之包

go语言碎片整理之包