04-包
什么是包,为什么使用包?
到目前为止,我们看到的 Go 程序都只有一个文件,文件里包含一个 main 函数和几个其他的函数。在实际中,这种把所有源代码编写在一个文件的方法并不好用。以这种方式编写,代码的重用和维护都会很困难。而包(Package)解决了这样的问题。
包用于组织 Go 源代码,提供了更好的可重用性与可读性。由于包提供了代码的封装,因此使得 Go 应用程序易于维护。
通过这个程序,我们会更好地理解包
main函数和main包
所有可执行的 Go 程序都必须包含一个 main 函数。这个函数是程序运行的入口。main 函数应该放置于 main 包中。
package packagename 这行代码指定了某一源文件属于一个包。它应该放在每一个源文件的第一行。(包名是该项目所处的文件夹名,启动文件改成main包)
下面开始为我们的程序创建一个 main 函数和 main 包。在 Go 工作区内的 src 文件夹中创建一个文件夹,命名为 geometry。在 geometry 文件夹中创建一个 geometry.go 文件。
在 geometry.go 中编写下面代码。
package main #main包 import "fmt" #导fmt包 func main() { fmt.Println("Geometrical shape properties") }
package main
这一行指定该文件属于 main 包。import "packagename"
语句用于导入一个已存在的包。在这里我们导入了 fmt
包,包内含有 Println 方法。接下来是 main 函数,它会打印 Geometrical shape properties
。
创建自定义的包
属于某一个包的源文件都应该放置于一个单独命名的文件夹里。按照 Go 的惯例,是该文件夹名命名包名,在同一个文件夹下,包名必须一致。启动文件的包名必须是main,其他文件夹的包名可以是文件夹名字。
导入自定义包
导入自定义包的语法为 import 包名。我们必须指定自定义包是针对于src文件夹的相对路径。
// 包的使用 package main import "mypackage" #导入mypackage包(src文件夹下的mypackage文件夹) import "fmt" func main() { //想使用mypackage包下的test函数和test1函数 mypackage.Test1() #在外部使用package包下的Test1函数,函数需要首字母大写 fmt.Println("xxx") }
mypackage包
package mypackage import "fmt" func Test1() { fmt.Println(test(1,2)) fmt.Println("xxxx") }
注意:(******)
1.在同一个包下,变量,函数,都不能重复定义
2.在包内定义的函数如果是小写字母开头,表示只能在包内部使用
3.在外部包想使用(不在同一个文件夹下的文件),必须首字母大写
下载第三方包可以在git上下载
比如下面这个:
go get github.com/astaxie/beego