go包管理package

119 阅读2分钟

 包里声明的函数,或者类型,在外部如果需要使用,需要首字母大写

我们在外层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的文件。