1 包package
1)为什么使用包
go语言使用package来组织程序间的结构,包是数据与函数的集合。
每一个包相当于一个模块。包可以被其他的包import引入后使用其中的类型,变量和函数。
2)导入包
import "包名"
import 包别名 "包名"
import _ "包名" 这儿使用`_`的意思是引入后面的包名但是不直接使用这个包中定义的函数,变量等资源。
impoert . "包名" 指在当前目录直接使用包中的类型或者方法,可以省略包名
2)新建包
按照惯例, 包应当以小写的单个单词来命名,且不应使用下划线或大小写混合。
使用package定义一个包,定义的时候包名和所在目录一致,但是不必和所在文件名保持一致。
工程目录需要添加到GOPATH的变量中。这样在"$GOPATH/src"下面的目录会生产一个可用的目录名的pkg。
比如,在mypack目录新建mypack_1.go文件:
文件src/mypack/mypack_1.go
2 包的运行方式
包的查找
首先,是查找GO安装目录(GOROOT),根据import的包名,编译"$GOROOT/src/pkg/"包名目录下的代码。
其次,继续寻找workspace(GOPATH)目录,根据import的包名,编译"$GOPATH/src/pkg包名" 目录下的代码。
当import的目录使用"/"来分割时候,表示多层目录。
包的运行
首先,会根据import语句加载其他包。
其次,会根据const语句来创建常量。
再次,会根据var语句来创建变量。
最后,会根据init函数执行初始化。
当上面一切就绪后,运行main,main()函数,执行程序。
3 包的修饰
1)首字母大写:所有的变量,如类型,全局变量,共有函数等首字母大写时是可导出的,在包外可调用。
2)首字母小写:所有的变量,如类型,全局变量,私有函数等函数名首字母小写。不可导出的,只在包内部调用。
4 常用的包
fmt 格式化的IO输出 常用方法:Print() Println() Printf() Scanf()
io 原始的IO操作
bufio 实现缓冲的IO操作
sort 对数组和集合的排序
strconv 字符串和基本数据类型间的转换
os 操作系统接口包
sync 同步包
flag 命令行解析
templete 数据模板
http HTTP服务实现包
reflect 反射包
exec 执行外部命令包
1)为什么使用包
go语言使用package来组织程序间的结构,包是数据与函数的集合。
每一个包相当于一个模块。包可以被其他的包import引入后使用其中的类型,变量和函数。
2)导入包
import "包名"
import 包别名 "包名"
import _ "包名" 这儿使用`_`的意思是引入后面的包名但是不直接使用这个包中定义的函数,变量等资源。
impoert . "包名" 指在当前目录直接使用包中的类型或者方法,可以省略包名
2)新建包
按照惯例, 包应当以小写的单个单词来命名,且不应使用下划线或大小写混合。
使用package定义一个包,定义的时候包名和所在目录一致,但是不必和所在文件名保持一致。
工程目录需要添加到GOPATH的变量中。这样在"$GOPATH/src"下面的目录会生产一个可用的目录名的pkg。
比如,在mypack目录新建mypack_1.go文件:
文件src/mypack/mypack_1.go
package mypack func Dosomething() { } 文件src/main.go package main import ( "fmt" "mypack" ) func main() { fmt.Println("Hello World!") mypack.Dosomething() }
2 包的运行方式
包的查找
首先,是查找GO安装目录(GOROOT),根据import的包名,编译"$GOROOT/src/pkg/"包名目录下的代码。
其次,继续寻找workspace(GOPATH)目录,根据import的包名,编译"$GOPATH/src/pkg包名" 目录下的代码。
当import的目录使用"/"来分割时候,表示多层目录。
包的运行
首先,会根据import语句加载其他包。
其次,会根据const语句来创建常量。
再次,会根据var语句来创建变量。
最后,会根据init函数执行初始化。
当上面一切就绪后,运行main,main()函数,执行程序。
3 包的修饰
1)首字母大写:所有的变量,如类型,全局变量,共有函数等首字母大写时是可导出的,在包外可调用。
2)首字母小写:所有的变量,如类型,全局变量,私有函数等函数名首字母小写。不可导出的,只在包内部调用。
4 常用的包
fmt 格式化的IO输出 常用方法:Print() Println() Printf() Scanf()
io 原始的IO操作
bufio 实现缓冲的IO操作
sort 对数组和集合的排序
strconv 字符串和基本数据类型间的转换
os 操作系统接口包
sync 同步包
flag 命令行解析
templete 数据模板
http HTTP服务实现包
reflect 反射包
exec 执行外部命令包
有疑问加站长微信联系(非本文作者)