Go

RE:从零开始的Golang学习笔记(六)包

参考:菜鸟教程&&Go系列教程

我的理解:包和函数类似,函数是封装执行特定任务的代码块,包是封装不同功能的函数,需要时导入。

说明

package main

import "fmt"

func main() {
    fmt.Println("Hello Go")
}

在这段代码中,package main 指定该文件属于 main 包 ,放在源文件第一行

import "fmt" 表示该文件导入了 fmt 包

fmt.Println 为使用了 fmt 包下的函数 Println

自定义包

首先在工作区的src目录下创建以下文件以及目录
文件目录.png

在hellogo.go 文件中写入以下代码

package hellogo //和目录名保持一致,也就是说该目录下所有文件都属于 hellogo 包

import "fmt"

func Hello()  {
    fmt.Println("Hello Go")
}

在01.go中导入包并调用Hello函数,包的路径相对src目录

package main

import (
    "hellogo"
)

func main() {
    hellogo.Hello()
}

运行后输出 Hello Go .

导出名字

在上面的代码中,需要注意的是,hellogo 包中的函数首字母大写

因为在Go中,任何以大写字母开头的变量或者函数都是被导出的名字。其它包只能访问被导出的函数和变量。

如果这里改成小写,其他包是无法访问hello函数的。

也可以理解为变量和函数首字母大写是共有的,小写是私有的

注意

在Go中,不允许导入包后不使用,如果在开发过程中需要引入但暂时使用不到,可以用以下的写法

package main

import (
    "hellogo"
)

var _ = hellogo.Hello // 错误屏蔽器

func main() {
}

使用空白标识符来调用包中的方法即可

有时候我们导入包只是想确保它进行了 init 初始化,也可以使用 _ 空白标识符

package main

import (
    _"hellogo"
)

func main() {
}

init 函数

所有的包都可以包含一个 init 函数

func init()  {
    //init 函数不应该有任何返回值类型和参数
}

init 在main函数前执行,可用于执行初始化任务,也可用于在开始执行之前验证程序的正确性。
init.png
结果为
init结果.png

也可以在init中加入判断,为真则不继续执行

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.