6. 工作区域与包

其实准备之后再研究包这个东西的,但是对于Go语言包是管理源码的方式,还是仔细了解一下吧。

之前几章的代码都是在一个go文件中测试运行的,但是实际项目肯定不止一个文件,使用包可以使Go程序更加容易维护。

package xxx 这行代码表示此文件属于哪一个包,一般放在第一行。

如果使用package main则表示,此文件会生成可执行文件,且必须有main函数,否则:function main is undeclared in the main package。

【工作区】

 Go安装完毕后,GOPATH会出现在环境变量中(以windows为例),可以添加自己的工作区域。

【创建包】

假设工作区的路径是: D:go_workspacego,我们手动新建一个包,那么包的目录结构如下:

src
    hello
        hello.go

bin
    hello.exe

其中bin目录是会自动生成的,包构建完毕后,我们在hello.go中放入Hello Go!测试代码。 输入 go install hello, 这是使用install编译,而且不需要切换到源码路径下。

如果编译成功,那么bin目录会自动生成,hello.exe也会在bin目录下。

【调用其他包】

再创建一个function包,新建string.go,目录结构如下:

src
    hello
        hello.go
    function
        string.go

bin
    hello.exe

hello.go代码

package main 

import (
    "fmt"
    "function"
)

func main() {  
    fmt.Println(function.Lower("ABC"))
    fmt.Println(function.Upper("ABC"))
}

string.go代码

package function 

import "strings"

func Lower(str string) string {
    return strings.ToLower(str)
}

func Upper(str string) string {
    return strings.ToUpper(str)
}

输入 go install hello,go语言会自动在工作区下搜索包function并自动编译。

这里要注意:导出的函数首字母必须大写。

【init函数】

每个包的每个go文件都可以有一个 init 函数,用于初始化,会按照编译的顺序运行。

每个init只会运行一次,如果一个包调用了另一个包,那么被调用的包的init会先被运行。

原文地址:https://www.cnblogs.com/hatsusakana/p/9810449.html