Go 依赖管理及项目架构学习笔记1| 青训营笔记

75 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第1天。为了整备大项目重温了一遍go module相关知识,为了强化理解也方便之后查阅,写点笔记。

Package和import

Go语言的源码复用建立在Package的基础上。

自己编写包

一个文件的包名用package关键字指定。

package main

包的管理有几条重点:

  • Go使用包作为管理源代码的基本单位。任何代码文件均应该从属于某个包。
  • 在一个Go语言项目中,一个包就是一个目录。目录中包含所有该包的文件,同属一个包的源码文件不能乱放。
  • 一般而言,包的名称就是目录的名称
  • 包名应该全小写,并且遵循一定的代码命名规范。

最关键的一个包是main包。main包中的main.go是整个程序的入口,其中的main函数是入口函数。只有编译这个包会产生可执行的二进制文件。

引入外部(?)包

有时候需要引入外部包,这些包通常是使用go get等命令从github等位置获取的。一般而言go get命令会将下载的包放在$GOPATH/src/<Domain>/<Name>下,例如github.com/projname。如果需要导入则需要使用import语句。路径从$GOPATH/src开始算,例如:

import "github.com/projname"

或者多行格式导入:

import(
    "github.com/projname1"
    "github.com/projname2"
    "github.com/projname3"
)

$GOPATH是一个关键的环境变量,可以通过go env查看。这个变量对于早期的go依赖管理十分关键,将在下一篇文章中记录。 就像python中的import x as y一样,go语言也可以为导入的包设置别名,像下面一样:

import Alias "package"

也就是为package包设置Alias别名,引用时直接用Alias就可以。

下一篇预告

  • Go语言依赖管理的发展
  • GOPATH的原理和应用
  • 一个简单的项目架构 附带比较复杂的应用架构(util、dao、model等)