包里声明的函数,或者类型,在外部如果需要使用,需要首字母大写
我们在外层main里使用该包。
此时会提示不在标准库中。我们需要修改一下环境变量。设置GO111MODULE=auto
这会让Go在GOPATH模式下运行,即使你在一个包含go.mod文件的目录中
GO111MODULE=on
这会让Go在模块模式下运行,即使你在GOPATH下工作。
export GO111MODULE=auto
Go会根据当前目录是否存在go.mod文件来决定是否使用模块支持。如果存在go.mod,则使用模块模式;如果不存在,则使用GOPATH模式。
此时我们根目录下没有mod文件。会使用GOPATH模式。会以GOPATH下的src为根目录,引用模块
2.以go mod模式引入。 我们打开命令行终端,输入go mod init test.com
此时引入的路径,以go.mod为跟目录,引用模块。coderun并不是先进入到当前项目文件夹,在执行go run命令,此时用coderun插件运行程序会失败。我们打开终端,输入go run main.go
包的重命名
假设有两个包:
math包,其中包含一个Sqrt函数。anothermath包,其中也包含一个Sqrt函数。
如果你想要同时使用这两个包的 Sqrt 函数,但又不想在代码中频繁切换使用哪个包的 Sqrt,你可以这样导入并重命名:
import (
m "math"
am "anothermath"
)
result1 := m.Sqrt(4) // 使用 标准库 的math包中的Sqrt函数
result2 := am.Sqrt(4) // 使用anothermath包中的 Sqrt 函数
4.init()函数
5.匿名导包
如果你只是想利用包的初始化函数(init()),而不关心包的其他部分,可以使用匿名导入。
格式:
import _ "path/to/package"
这里的下划线_是一个空白标识符,用来丢弃导入包但不直接使用它。
匿名导入是Go语言提供的一种机制,用于在不直接引用包中的任何标识符的情况下执行包的初始化代码。使用时应谨慎,确保其必要性并清楚为何需要这样做。通过这种方式,你可以有效地利用Go包的初始化功能,同时保持代码的清晰和简洁。
注意:
同一个目录下,不允许声明不同package的文件。