每个 Go 程序都是由包构成的。程序从 main 包开始运行。也就是说main为程序的入口。按照约定,包名与导入路径的最后一个元素一致。例如,"math/rand" 包中的源码均以 package rand 语句开始。
程序需要引用包来实现其包的功能,在GO语言中,未使用的包要清理或者忽略掉,否则编译不会通过。
import "fmt" //引入1个包
//引入1个或者多个包
import (
"fmt"
_ "math" //前面加了下线包表示这个包将忽略掉
)
引入包的路径是从项目环境变量的src目录开始的(不包括src),通常情况下包与目录和文件的名字一致:
电脑的工作区
|
+--- bin目录 // go install 安装目录。
| |
| +--- 我的项目名
|
|
+--- pkg目录 //go build ⽣成静态库 (.a) 存放目录。
| |
| +--- darwin_amd64
| |
| +--- 我的库.a
| |
| +--- 我的库
| |
| +--- 库项目.a
|
+--- src目录 // 项目源码目录。引包就从下面开始
|
+--- 我的项目目录
| |
| +--- main.go
|
|
+--- 我的库目录
|
+--- 我的库.go
|
+--- 公共库目录
|
+--- 公共库文件.g
可以在GOPATH环境变量中添加多个工作空间,但不能和GOROOT相同。通常go get使用第一个工作空间保存下载的第三方库
编码:源码⽂件必须是 UTF-8 格式,否则会导致编译器出错。
结束:单行语句 “;” 结束,换行语句“;”省略。
注释:⽀持 “//”、 “/**/” 两种注释⽅式,不能嵌套。
命名:采⽤ 驼峰命令(camelCasing) ⻛格,不建议使⽤下划线。
引包可以使用别名,很多时候我们引用的包名字很长,或者记不住包的名字,我们可以给包取个自定义的名字方便我们调用:
import(
io "fmt"
)
io.Println("hello world") //别名可以直接用,在包重名时很有用
或者这样操作:
import (
. "fmt" //但是为了别人好看,一般还是不用这种
)
func main(){
Println("hello")
}
很多人说GO语言是面向github编程,因为可以直接引用github上的包,
import "github.com/xxxx/xxx"
go build 命令会使用 GOPATH的设置,在磁盘上搜索这个包。事实上,这个导入路径代表一个URL,指向 GitHub上的代码库。如果路径包含 URL,可以使用 Go 工具链从DVCS 获取包,并把包的源代码保存在 GOPATH指向的路径里与 URL 匹配的目录里。这个获取过程使用 go get 命令完成。 go get 将获取任意指定的 URL 的包,或者一个已经导入的包所依赖的其他包。由于 go get的这种递归特性,这个命令会扫描某个包的源码树,获取能找到的所有依赖包。
文件夹名称 | 含义 |
src,source | 源代码,用src居多 |
test,__tests__ | 测试文件,也经常用__test__,facebook的测试框架jest默认的测试文件目录就是__test__ |
docs | 文档 |
lib | 库文件,library的缩写 |
dist | 用来放打包编译后的文件,distribution的缩写 |
build,scripts | 构建脚本 |
utils,tools,helpers | 工具代码 |
controllers,views,middlewares,models | MVC对应的models,views,controllers,还有中间件middlewares |
router | 路由 |
server | 用来放服务端代码 |
adapters | 适配器,适配器模式是一种很常用的设计模式 |
legacy | 一般用来放兼容历史版本或兼容旧浏览器的代码 |
config | 配置文件、数据库连接配置什么的 |
benchmarks | benchmarks测试,又叫基准测试或性能测试。用来测试版本的性能变化 |
unit,spec | 单元测试,一般在test目录下 |
e2e | 端对端测试,一般在test目录下 |
assets,vendor | 资源,一般用来放图片或css文件 |
css,styles | css文件 |
js | javascript文件 |
images,img | 图片文件 |
fonts | 字体文件、比如随机调用字体生成验证码 |
pages | 页面文件、一般存放静态HTML文件 |
static | 静态资源、CSS、JS、图片等 |
examples,demo | 示例,开源框架演示 |
component | 组件,部件 |
plugins | 插件、扩展 |
bin | 命令脚本,命令行工具经常会用到 |
common,public | 公用的文件,大家都需要调用使用的 |
packages | 很多项目会打包出多个npm包,用来减小体积,一般会用packages来放不同的包 |
misc | 杂项,miscellaneous的缩写,一些不小常用却能用上的代码 |
core | 核心文件,用于存放主功能函数、方法。 |
dao | data access object的缩写,用于数据访问层,即数据库操作 |
1、文件名_平台:file_windows.go, file_unix.go
2、测试单元:被测试的文件_test.go : main_test.go
3、版本区别:文件名_版本号等:main_1.5.go
4、CPU类型:main_x86.go、main_arm.go、main_amd64.go
除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/77
《GO语言学习笔记8:程序的包管理与理解》的网友评论(0)