Go语言14-包

1.包的由来

为了代码更好的维护和复用,Go语言按程序的功能性将源代码分割成一个个逻辑单元,组织成若干组文件,每组文件被称为一个包。这样开发人员可以以包为单位对代码进行维护,也可以以包为复用单元,引入到其他项目。

2.包名

为了方便包的定位,建议包名和目录名一致,即以.go为后缀名的源文件,其第一行代码所声明的包名和 此文件所属的目录名一致。

3.包的分类

3.1main包

Go语言编译的可执行程序,其包名必须是main,而且这个main包里一定要有且仅有一个main()函数。如此,Go语言的编译程序会试图把main包编译为二进制的可执行文件,而main()函数就是这个程序的入口。

3.2标准包

Go程序再安装的时候就已经安装了Go语言的标准库,内置与Go语言的安装包下面的src包,它基本实现了Go语言的常用功能。它的导入格式如下:

import (
"fmt" //fmt包用于格式化输出
"sort" //sort包提供了排序切片和用户自定义数据集的函数
)

3.3程序的内部包

程序内部包,包括下载到本地的源码包和自定义代码包。Go语言规定下载到本地的源码包和自定义的代码包都放在GOPATH的src目录下(或者GOPATH的src的某个子目录下)。

3.3.1同一路径下的不同文件

再Go语言程序里,同一路径下多个文件被Go语言编译器看做是一个文件。程序里声明的包名必须相同(建议包名和目录名一致),可以直接相互引用数据(全局变量,函数,结构体,结构体成员),不能导入路径。因此,在这多个文件中不能出现同名的全局变量名,函数名,结构体类型名,结构体成员变量名,首字母大小写均不可以。

3.3.2 不同路径下的不同文件

不同路径下的文件,程序声明的包名可以相同,也可以不同,但再执行程序中导入另一个文件中的数据,必须导入另一个文件所在的路劲。

GOPATH环境变量为~/Go/src

假如所需要导入的函数所在的文件sort,go的路径为:~/Go/src/Demo/sort/sort.go

则再执行程序中写入下面的代码:

import "Demo/sort"

4.导入包中的代码调用

4.1可见性规则

如果包内(main包除外)的全局变量名,函数名,结构体类型名,结构体成员变量名的首字母大写,则可以被外部包访问;如果小写,只能被同一个包里的文件访问。

4.2包中的代码调用

调用对象调用格式
导入包全局变量包名.全局变量名
导入包函数包名.函数名
导入包结构体包名.结构体类型
导入包结构体对象结构体变量名.成员对象名
package dcdfvfer

import "fmt"

var A int = 10 //全局变量,首字母大写
var a int = 5  //全局变量,首字母小写
/*结构体变量,首字母大写*/
type Student struct {
	/*结构体成员变量,首字母小写*/
	male byte
	/*结构体成员变量,首字母大写*/
	Num int
}

/*结构体变量,首字母小写*/
type teacher struct {
	Male byte
	Num  int
}

func Ha() {
	fmt.Println("hello")
}
func ha() {
	fmt.Println("哈喽")
}
package main

import (
	"Demo/dcdfvfer"
	"fmt"
)

func main() {
	fmt.Println("A=", dcdfvfer.A) //包名.全部变量
	//fmt.Println(a) //不能被调用
	var s dcdfvfer.Student //包名.结构体类型
	//s.male ='m' //不能被调用
	s.Num = 1
	fmt.Println("s=", s)
	//var t dcdfvfer.teacher //不能被调用
	dcdfvfer.Ha() //包名.函数名
	//dcdfvfer.ha() //不能被调用
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值