Golang学习笔记之包(package)

栏目: Go · 发布时间: 7年前

内容简介:编译⼯具对源码目录有严格要求,每个⼯作空间 (workspace) 必须由 bin、 pkg、 src 三个目录组成。通过"go get + 完整包名"保存下载第三方库。在执行go get 命令之前,确保你的电脑配置了环境变量GOPATH,并且安装git。

包是结构化代码的一种方式:每个程序都由包的概念组成,可以使用自身的包或者从其它包中导入内容。

一、工作空间

编译⼯具对源码目录有严格要求,每个⼯作空间 (workspace) 必须由 bin、 pkg、 src 三个目录组成。

Golang学习笔记之包(package)

二、包结构

所有代码都必须组织在 package 中。

• 包由同⼀目录下的多个源码⽂件组成。

• 包名类似 namespace,与包所在目录名、编译⽂件名⽆关。

• 目录名最好不⽤ main、 all、 std 这三个保留名称。

• 可执⾏⽂件必须包含 package main,⼊⼝函数 main。

包声明 "package + 包名" ,必须在源文件中非注释的第一行指明这个文件属于哪个包。如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。

同一个包(package)下面,可以有非常多的不同文件,只要每个文件的头部都有相同name就可以,如 "package oldboy" 。文件夹名字可以和这个package名称不一致。

三、标准库

在Go的安装文件里包含了一些可以直接使用的包,即标准库。
Golang标准库文档

四、第三方库

通过"go get + 完整包名"保存下载第三方库。

在执行go get 命令之前,确保你的电脑配置了环境变量GOPATH,并且安装git。

五、导出包里面的数据

变量、函数、结构体、方法等,首字母大写,则可以被其他的包访问,如果首字母小写,则只能在本包中使用。

六、导入包

(1)导入标准库的系统包。

import "fmt"

(2)绝对路径导入包,导入 gopath/src/geometry/rectangle包中的内容。

"import "geometry/rectangle"

(3)相对路径导入包,导入同一目录下 rectangle 包中的内容。

import "./rectangle //仅对 go run main.go 有效"

(4)包重命名模式,导入包并启用别名。

import f "fmt //导入fmt,给他起别名f

(5)简便模式,这样就可以直接使用其内容,而不用再使用其"包名."的模式

import . "fmt" //例如fmt.Println可以直接写为Println

(6)⾮导⼊模式,仅让该包执⾏初始化函数

import _"./rectangle" //仅执行该包内的init函数

未使⽤的导⼊包,会被编译器视为错误 (不包括 "import _")。

七、初始化

• 每个源⽂件都可以定义⼀个或多个初始化函数。

• 编译器不保证多个初始化函数执⾏次序

• 初始化函数在单⼀线程被调⽤,仅执⾏⼀次。

• 初始化函数在包所有全局变量初始化后执⾏。

• 在所有初始化函数结束后才执⾏ main.main。

• ⽆法调⽤初始化函数。

• 如果一个包导入了另一个包,被导入的包先初始化。

函数形式如下:

func init() {
    f.Println("init")
}

不应该滥⽤初始化函数,仅适合完成当前⽂件中的相关环境设置。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python灰帽子

Python灰帽子

[美] Justin Seitz / 丁赟卿 译、崔孝晨 审校 / 电子工业出版社 / 2011-3 / 39.00元

《Python灰帽子》是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍。老牌黑客,同时也是Immunity Inc的创始人兼首席技术执行官(CTO)Dave Aitel为这本书担任了技术编辑一职。书中绝大部分篇幅着眼于黑客技术领域中的两大经久不衰的话题:逆向工程与漏洞挖掘,并向读者呈现了几乎每个......一起来看看 《Python灰帽子》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具