go语言-包(一)

go使用包来组织源代码,Go语言没有强制要求包名必须和其所在的目录名同名,但是建议包名和所在目录名同名,包借助了目录树的组织方式。 包的导入:包名是从GOPATH/src/后开始计算的,使用/进行路径分隔 全路径导入:GOROOT/src后开始写 包命名别名:import F "fmt" 省略引用格式:import . "Fmt"引用时直接使用Println() 匿名引用:只是希望执行包初始化的init 函数,而不使用包内部的数据时,可以使用import _ "net/http" 包加载:在执行main包的main函数之前,go引导程序对整个程序的包进行初始化。从main函数引用的包开始,逐级查找包的引用,直到找到没有引用其他包的包,最终生成一个包引用的有向无环图。然后将图转化为一棵树,从树的叶子节点逐层向上对包进行初始化。单个包初始化时,先初始化常量,然后全局变量,最后执行init函数。 使用 export 指令可以将当前目录的值设置到环境变量 GOPATH中。 export GOPATH=pwd 建立gopath中的源码目录:mkdir -p src/hello 编译和运行:go install hello bin目录下执行./hello GOPATH路径建议随项目路径设置,避免不可预知的错误 功能常用内置包 fmt io bufio 对io包的封装,并提供了缓冲数据功能 sort strconv 字符串和基本数据类型之间转换 sync 实现中锁机制和其他同步互斥机制 flag 命令行参数规则定义和解析 encoding/json 对象《=》JSON字符串间转换 html/template 主要实现了 web 开发中生成 html 的 template 的一些函数 net/http ox/exec linux命令相关实现 reflect bytes log 自定义包 Go 编译速度快受益于以下三点: 所有导入的包必须在每个文件的开头显示的声明 禁止包的环状依赖,包的依赖关系会形成一个有向无环图,每个包可以独立编译,且很可能会并发编译 编译后的文件不仅记录了本身的导出信息,目标文件还记录了包的依赖关系。因此在编译一个包时,不需要遍历所有引入的包,只需要读取直接导入的目标文件即可。 包中的标识符,让外部的包可以访问包的类型和值 type MyStruct struct { OutPackage int // 包外可用 innerPack string // 包内访问 } type MyInterface interface { ExportedMethod() // 包外 innerMethod()// 包内 }

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):