Go学习之路——基础知识

Go特点

静态类型、编译型的开源语言。(静态类型就是在编写过程中需要明确类型)

基本概念

工作区和GOPATH

工作区是存放Go源码文件的目录。
每一个工作区的结构都类似下图:
src/ 用于存放源码文件、以代码包作为组织形式
pkg/ 用于存放归档文件(名称以.a为后缀的文件),存放在平台相关目录
bin/ 用于存放当前工作区种的Go程序的可执行文件

源码文件的分类

Go源码文件:以.go为后缀,内容以Go语言代码组织的文件
分三类:
命令源码文件、库源码文件 Go源码文件
测试源码文件(以_test.go为后缀) 辅助源码文件
命令源码文件是包含main函数的文件,是Go程序的入口。

依赖包package

package是最基本的分发单位和工程管理中依赖关系的体现;
每个GO语言源代码文件开头都拥有一个package声明,表示源码文件所属的代码包;
当我们写不同的类,或者不同的函数的时候,要给其他的开发人员使用,我们就把自己的类或者函数打包在一个包里面,供其他人调用。

dep

而dep是golang项目依赖管理之一,是官方的实验项目。
golang最原始的依赖管理是go get,执行命令后会拉取代码放入src下面,但是它是作为gopath下全局的依赖,并且go get还不支持版本控制,以及隔离项目的包依赖在没有依赖管理工具的时候,golang项目有一种目录结构比较流行如下:

.
└── src
    ├── demo
    │   └── main.go
    ├── github.com
    ├── golang.org
    └── gopkg.in

可以看出这样的目录结构还是有很多缺陷的。没有版本控制,不同版本的包就要分成两个目录;没有统一的风格,会非常混乱。
所以目前golang引入了vendor目录作为依赖管理目录,且ide或golang编辑插件目前都能很好的支持,例如goland索引依赖包时会优先查找项目根目录下的vendor目录。那么目前比较流行的目录结构如下:

.
├── Gopkg.lock
├── Gopkg.toml
├── main.go
└── vendor
    ├── github.com
    │   ├── gin-contrib
    │   ├── gin-gonic
    │   ├── golang
    │   ├── mattn
    │   └── ugorji
    ├── golang.org
    │   └── x
    └── gopkg.in
        ├── go-playground
        └── yaml.v2

你可能感兴趣的:(golang,golang)