如何深入理解并高效运用GO语言中的包(package)管理?

2026-04-11 08:251阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计690个文字,预计阅读时间需要3分钟。

如何深入理解并高效运用GO语言中的包(package)管理?

包(package)+ package + packagename + 其中: + package:声明包的关键字 + packagename:包名,可以与文件名不同,但不能包含+-等符号,最好与其实现的功能相对应 + 例如:如果想让一个包中的标识符(如变体) + 则可以直接输出结果: + 包(package)+ package + packagename + 其中: + package:声明包的关键字 + packagename:包名

包(package)

如何深入理解并高效运用GO语言中的包(package)管理?

package packagename

其中:

  • package:声明包的关键字
  • packagename:包名,可以不与文件夹的名称一致,不能包含 - 符号,最好与其实现的功能相对应

如果想让一个包中的标识符(如变量、常量、类型、函数等)能被外部的包使用,那么标识符必须是对外可见的(public)。在Go语言中是通过标识符的首字母大/小写来控制标识符的对外可见(public)/不可见(private)的。在一个包内部只有首字母大写的标识符才是对外可见的。

  • import 导入语句通常放在文件开头包声明语句的下面
  • 导入的包名需要使用双引号包裹起来
  • 包名是从$GOPATH/src/后开始计算的,使用/进行路径分隔
  • Go语言中禁止循环导入包
  • 内置包和第三方包会自动空一行

init初始化函数

  • 包的路径从GOPATH/src后面的路径开始写起,路径分隔符用/
  • 想被别的包调用的标识符都要首字母大写!
  • 单行导入和多行导入
  • 导入包的时候可以指定别名
  • 导入包不想使用包内部的标识符,需要使用匿名导入
  • 每个包导入的时候会自动执行一个名为init()的函数,它没有参数也没有返回值也不能手动调用
  • 多个包中都定义了init()函数,注意执行顺序

calc.go

package calc import "fmt" func init() { fmt.Println("import 我时自动执行...") } // 包中的标识符(变量名、函数名、结构体、接口等)如果首字母是小写的,表示私有(只能在当前这个包中使用) // 首字母大写的标识符可以被外部的包调用 func Add(x, y int) int { return x + y }

main.go

package main import ( "fmt" // 起别名 路径 最好包名和路径一致 calc "github.com/qiaopengjun/day05/10calc" ) var x = 100 const pi = 3.14 func init() { fmt.Println("自动执行!") fmt.Println(x, pi) } func main() { ret := calc.Add(10, 20) fmt.Println(ret) }

全局声明——> init()——> main()

本文共计690个文字,预计阅读时间需要3分钟。

如何深入理解并高效运用GO语言中的包(package)管理?

包(package)+ package + packagename + 其中: + package:声明包的关键字 + packagename:包名,可以与文件名不同,但不能包含+-等符号,最好与其实现的功能相对应 + 例如:如果想让一个包中的标识符(如变体) + 则可以直接输出结果: + 包(package)+ package + packagename + 其中: + package:声明包的关键字 + packagename:包名

包(package)

如何深入理解并高效运用GO语言中的包(package)管理?

package packagename

其中:

  • package:声明包的关键字
  • packagename:包名,可以不与文件夹的名称一致,不能包含 - 符号,最好与其实现的功能相对应

如果想让一个包中的标识符(如变量、常量、类型、函数等)能被外部的包使用,那么标识符必须是对外可见的(public)。在Go语言中是通过标识符的首字母大/小写来控制标识符的对外可见(public)/不可见(private)的。在一个包内部只有首字母大写的标识符才是对外可见的。

  • import 导入语句通常放在文件开头包声明语句的下面
  • 导入的包名需要使用双引号包裹起来
  • 包名是从$GOPATH/src/后开始计算的,使用/进行路径分隔
  • Go语言中禁止循环导入包
  • 内置包和第三方包会自动空一行

init初始化函数

  • 包的路径从GOPATH/src后面的路径开始写起,路径分隔符用/
  • 想被别的包调用的标识符都要首字母大写!
  • 单行导入和多行导入
  • 导入包的时候可以指定别名
  • 导入包不想使用包内部的标识符,需要使用匿名导入
  • 每个包导入的时候会自动执行一个名为init()的函数,它没有参数也没有返回值也不能手动调用
  • 多个包中都定义了init()函数,注意执行顺序

calc.go

package calc import "fmt" func init() { fmt.Println("import 我时自动执行...") } // 包中的标识符(变量名、函数名、结构体、接口等)如果首字母是小写的,表示私有(只能在当前这个包中使用) // 首字母大写的标识符可以被外部的包调用 func Add(x, y int) int { return x + y }

main.go

package main import ( "fmt" // 起别名 路径 最好包名和路径一致 calc "github.com/qiaopengjun/day05/10calc" ) var x = 100 const pi = 3.14 func init() { fmt.Println("自动执行!") fmt.Println(x, pi) } func main() { ret := calc.Add(10, 20) fmt.Println(ret) }

全局声明——> init()——> main()