这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战
Go中标识符的可见性
Go中所有的包名都必须是小写的
如果一个标识符首字母小写, 则只能在包内的多个文件中使用, 对于整个包的内部是可见的
如果首字母大写, 则可以在其它的包中使用这个标识符, 对于包外也是可见的
Go中的包
在Go语言中使用package(包)来进行源文件和代码的管理. 一般都是将同一个模块或同一个功能下的代码放到同一个包中.
例如Go内置的包
// 用来存放一些基本的数据类型和一些初始仳的函数
package builtin
同一个包下可以有多个源文件, 并且同包下的源文件是可以互相使用变量和函数的.
因此同一个包下的标识符不能有重名的, 否则会报编译错误.
但是不同的包中, 标识符的名字是可以重名的
导入包的方式
第一种
import "fmt"
import "math"
第二种
import (
"fmt"
"math"
)
第三种 给包起个别名
当我们使用包时的函数和变量的时候问题要带上包名
如果我们像上面那种引入包的方式的话, 要像下面这样使用
math.Sqrt(9)
我们可以给包起一个别名来简化代码的编写
import (
m "math"
f "fmt"
)
这样我们就可以使用简化后的包名来调用相应函数和变量
f.Println(m.Sqrt(9))
第四种 省略包名, 直接使用内部的函数和变量
import (
. "math"
f "fmt"
)
这样我们可以直接使用对应包下的函数了
f.Println(Sqrt(9))
第五种
当不再使用某个包里的函数或变量时, 如果不去掉这个包的引入, 编译器会报错
我们可以使用_来忽略这个包, 一般用在导入驱动包时使用
import (
_ "github.com/go-sql-driver/mysql"
)
第六种 手动导入外部包
先在终端中, 将第三方包下载下来
在终端中输入以下命名: go get -u github.com/gin-gonic/gin 来下载一个Web框架包
然后在源文件中使用import进行导入
import (
"github.com/gin-gonic/gin"
)
第七种 自动导入外部包
我们可以在当前项目目录对应的终端中输入go mod init来创建一个go.mod文件
然后引入要导入的第三包的地址
最后在终端中执行命令: go mod tidy 来从网络上将包下载下载并导入
Go中的init函数
Go中的init函数是用于初始化包里的一些内容的
不能被其它函数调用, 只能程序自己调用
每个源文件中可以有多个init函数
当源文件中有多个init函数时, 它们的执行顺序是定义顺序来决定
因此每个包有也会出现多个init函数
当包中有多个init函数时, 它们的执行顺序是不固定的