空导入
如果导入包的名字没有在文件中引用,就会产生一个编译错误。但是,有时候必须导入一个包,这仅仅是为了利用它的副作用:对包级别的变量执行初始化表达式求值,并执行它的init函数。这里必须使用一个重命名导入,使用下划线作为替代的名字。这表示导入的内容为空白标识符,通常情况下,空白标识不可能被引用:
<代码类=" language-go ">进口_“图像/png”//注册png解碼器代码>
<强>空白导入>强,多数情况下,使用空白引用导入额外的包,开启主程序中可选的特性。
命名
一些建议,关于遵从去的习惯来给包和它的成员进行命名。
包的命名
包名使用简短的名字,但是不要短到完全看不懂。
尽可能保持可读性和无歧义。例如,不要把一个辅助工具包命名为实效,使用imageutil或ioutil这样更具体和清晰的名字。
避免使用经常用于相关局部变量的名字作为包名,或者迫使使用者使用重命名导入,例如,路径就要避免用作包名。
命名通常使用统一的形式,使用复数形式来避免和关键字的冲突。例如,标准包字节,错误,字符串。
包成员的命名
引用包的成员会带上包名,所以设计成员名称的时候,要考虑包名和成员名这两部分协同一起表示的意义,而不只是成员名。
对于包导出的一个数据类型及其方法,通常有一个新的函数用来创建实例。而导出的类型的名称可能和包名重复,例如,模板。模板或兰德。兰特。
包中最重要的成员使用最简单的命名。
去工具
去工具将不同种类的工具集合并为一个命名集。它的命令行接口使用“瑞士軍刀”风格,有十几个子命令。可以运行<代码>去帮助> 代码来查看内置文档的索引:
<代码>错误错误报告 构建编译包和依赖关系 干净的文件和缓存文件删除对象 doc文档包或符号 env打印环境信息 更新补丁包使用新的api fmt go(格式化)包的来源 生成生成由处理源文件 下载并安装包和依赖关系 安装编译和安装包和依赖关系 包或模块列表列表 国防部模块维护 运行编译和运行程序 测试测试包 工具运行指定的工具 版本打印去 兽医报告可能错误包代码>
工作空间的组织
环境变量GOPATH执行工作空间的根。当需要切换不同的工作空间时,更新GOPATH变量即可。
切换环境变量然后下载代码:
<代码>美元出口GOPATH=$ HOME/gobook 美元去gopl.io/?/代码>
命令最后的三个点的意义,去命令下一节会讲。
GOPATH有三个子目录,分别用于存放不同类型的文件:
-
<李> src:源码文件。每一个包在一个目录中李>
<李>包裹:归档文件。构建工具存储编译后的包的位置,参考后面的去安装命令李>
<李>本:可执行文件。许多用户会将该目录添加到可执行程序的搜索列表中李>
环境变量GOROOT指定去发行版的根目录,其中提供所有标准库的包。用户无须设置GOROOT,因为默认情况下在安装去言语的时候会将其设置为安装路径。(如果机器上装了多个版本的,就可以通过这个环境变量来切换了吧。不过去目前需要使用多个版本的问题。
命令去env可以查看环境变量。
包的下载
去命令可以下载单一的包,也可以使用…符号来下载子目录或仓库。并且还会计算并下载所有依赖的包。
让包使用一个自定义的导入路径,但是真实的代码却是由更通用的站点提供,例如github。这只需要在页面的HTML中添加如下的元数据,它重定向去工具到实际托管地址的Git仓库:
<代码类=" language-html "> & lt;元name=癵o-import”内容="golang.org/x/net git https://go.googlesource.com/net "在代码>
去指定- u参数,将确保命令会访问所有的包(无论本地是否已经有了)更新到最新版本。如果没有这个参数,已经存在在本地的包就做任何处理和确认。
包的构建
命令去构建编译每一个命令行参数中的包。如果包是一个库,结果会被丢弃。如果是主要的包,则会创建可执行程序。
命令去运行则可以构建之后直接运行。适用于即用即抛型的程序。
第一个不是以.go结尾的参数会作为去可执行程序的参数列表的开始。