Golang 包管理 package

 

介绍包管理

- 包的定义与意义:

包用于组织 Go 源代码,提供了更好的可重用性与可读性

 

- 入口文件以及main函数:

  - main函数:

  - 所有可执行的文件,都必须有main函数,main函数是这个文件的执行入口;

  - 文件第一行的 package name:

    - 这行代码指定了该文件属于那一个包;应该写在每一源文件的第一行;

  - 示例:

  

  

// run.go

package main

import (
    "fmt"
    "mysite/mypack"
)

func main() {
    fmt.Println("This is my main function")
    mypack.MyPack()
}


// start.go

package mypack

import (
    "fmt"
)

func MyPack() {
    fmt.Println("这是我的第一自定义包")
}

 

 

自定义包

- 创建自定义的包:

  - 包实际就是存放 .go 类型的文件夹,在每个文件中,首行代码必须声明为 某个包的文件;

  - 注意路径的层级关系;

  - 注意环境变量的设置;

- 导入自定义的包:

  - 相对路径导入包:

    - 只能用相对路径导入包;

  - 绝对路径导入包:

    - 会报错:

package main

import (
    "fmt"
    // "mysite/mypack"
    "E:/Go语言/studt/src/mysite/mypack"
)

func main() {
    fmt.Println("This is my main function")
    mypack.MyPack()
}


// 报错信息:
run.go:6:2: invalid import path: "E:/Go语言/studt/src/mysite/mypack"

 

 

- 导入包中变量,函数,类等等;

在 Go 中,任何以大写字母开头的变量或者函数都是被导出的名字。
其它包只能访问被导出的函数和变量。
也就是说,想要被外界调用,必须首字母大写;
小写则不允许被调用

  - 调用小写的变量的异常报错信息:

cannot refer to unexported name rectangle.area

 

 - 空白符 _ :

导入了包,却不在代码中使用它,这在 Go 中是非法的;

然而,在程序开发的活跃阶段,又常常会先导入包,
而暂不使用它。遇到这种情况就可以使用空白标识符 _

 

  - 使用空白标识符避免报错的两种示例:

    - 使用错误屏蔽器:

package main

import (  
    "geometry/rectangle" 
)

var _ = rectangle.Area // 错误屏蔽器

func main() {

}

 

    - 在import 中使用空白符:

package main 

import (
    _ "geometry/rectangle" 
)
func main() {

}

 

  

init函数

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

 

- init 函数不应该有任何返回值类型和参数;

 

- init函数不能被外界调用;

 

- init 函数可用于执行初始化任务,也可用于在开始执行之前验证程序的正确性

 

- 执行顺序:

  - 先加载 导入的包中的 init方法;

  - 在加载 当前main包中 包级别变量;

  - 再加载 main包中的 init方法;

  - 最后根据main函数中的执行顺序 加载变量以及包的函数等等;

 

 

posted @ 2018-11-08 21:26  浮生凉年  阅读(1055)  评论(0编辑  收藏  举报