04 | 初始化 fastgo 项目仓库

提示:

项目开发的第一步便是初始化一个项目目录,并根据 golang-standards/project-layout 目录规范,添加必要的目录及文件。

本节课,来给你介绍下如何初始化一个 Go 项目。

初始化一个 Go 项目,大概分为以下几步:

  1. 创建项目目录;
  2. 初始化目录为 Go 模块;
  3. 初始化目录为 Git 仓库;
  4. 创建需要的目录;
  5. 创建 Hello World 程序。

步骤 1:创建项目目录

开发 Go 项目的第 1 步便是创建一个项目目录。现今 Go 模块管理都是用的 Go Modules。虽然,在使用 Go Modules 的情况下,不再需要设置 GOPATH 环境变量。但是为了提高项目的维护性,这里还是建议将项目放在 GOPATH目录下。

初始化项目目录,操作命令如下:

bash 复制代码
$ mkdir -p $GOPATH/src/github.com/onexstack/fastgo # 创建项目目录
$ cd $GOPATH/src/github.com/onexstack/fastgo # 进入到项目目录中
$ echo "## fastgo 项目" >> README.md # 创建一个 README 文件,作为项目的第一个文件

步骤 2: 初始化目录为 Go 模块

Go 项目都需要将目录初始化为一个 Go 模块。所以,这里我们需要将 fastgo 目录初始化为一个 Go 模块。初始化命令如下:

bash 复制代码
$ go mod init # 1. 初始化 Go 模块
$ go work init . # 2. 初始化 Go 工作区(仅限多模块管理场景),生成 go.work 文件  
$ go work use . # 添加当前模块到 Go 工作区

步骤 3: 初始化目录为 Git 仓库

当前 Go 项目基本都是使用 Git 来管理项目源码的。所以,我们接下来还需要将目录初始化为一个 Git 仓库。

初始化为 Git 仓库的第一步,就是在当前目录添加一个 .gitignore 文件,里面包含不期望 Git 跟踪的文件,例如:临时文件等。你可以使用生成工具 gitignore.io 来生成 .gitignore

git 复制代码
# 备份文件
*.bak
*~

# Go 工作区文件。Go 项目开发中,不建议将 Go 工作区文件提交到代码仓库
go.work
go.work.sum

# 日志文件
*.log

# 自定义文件
/_output

可以执行以下命令将 Go 项目仓库初始化为一个 Git 仓库:

bash 复制代码
$ git init # 初始化当前目录为 Git 仓库
$ git config user.name 孔令飞 # 设置仓库级别用户名
$ git config user.email colin404@foxmail.com # 设置仓库级别邮箱
$ git config --global credential.helper store # 永久保存凭据
$ git add . # 添加所有被 Git 追踪的文件到暂存区
$ git remote add origin https://github.com/onexstack/miniblog # 将本地仓库与远程仓库相关联
$ git commit -m "feat: 第一次提交" # 将暂存区内容添加到本地仓库中

之后,我们就可以在该目录下开发代码,并根据需要提交代码。提交后的源码目录内容如下:

bash 复制代码
$ ls -A
.git  .gitignore  go.mod  go.work  README.md

步骤 4: 创建需要的目录

执行以下命令预创建需要的目录:

bash 复制代码
$ mkdir -p cmd configs docs scripts
$ ls -F
cmd/  configs/  docs/  go.mod  go.work  README.md  scripts/

提前创建一些符合目录规范的空目录可以起到一下 2 个作用:

  • 提前规划目录相当于提前规划未来的功能,将未来要实现的功能以目录的形式固化在项目仓库中,起到记录的作用;
  • 提前创建目录有利于后续文件按照功能存放在预先规划好的目录中,从而使项目更加规范。否则,不同开发者可能会根据各自的开发习惯,创建各种各样的目录结构和目录名称。

因为 Git 默认不会追踪空目录,所以需要再空目录下创建 .keep 文件,创建命令如下:

bash 复制代码
$ touch configs/.keep docs/.keep scripts/.keep cmd/.keep

步骤 5: 创建 Hello World 程序

创建 cmd/fg-apiserver/ 目录(fg 是 fastgo 的简写):

bash 复制代码
$ mkdir -p cmd/fg-apiserver

新建 cmd/fg-apiserver/main.go,内容如下:

go 复制代码
package main

import "fmt"

// Go 程序的默认入口函数。阅读项目代码的入口函数.
func main() {
    fmt.Println("Hello World!")
}

编译并运行,命令如下:

bash 复制代码
$ gofmt -s -w ./ # 格式化 Go 源码
$ go build -o _output/fg-apiserver -v cmd/fg-apiserver/main.go # 编译 fg-apiserver 组件源码
$ ls _output/ # _output 为二进制文件保存目录
fg-apiserver
$ _output/fg-apiserver # 启动 fg-apiserver 组件
Hello World!
相关推荐
卢锡荣3 小时前
单芯双 C 盲插,一线通显电 ——LDR6020P 盲插 Type‑C 显示器方案深度解析
c语言·开发语言·ios·计算机外设·电脑
legendary_1633 小时前
PD显示器方案新维度:Type-C充电,投屏,显示技术革新
c语言·开发语言·计算机外设
ic爱吃蓝莓3 小时前
美团测开一面
java·开发语言
sghuter3 小时前
AI赋能CI/CD:Gemini实战脚本生成
开发语言·人工智能·ci/cd·青少年编程·r语言
me8323 小时前
【深入java语句】关于System.out.println();的底层逻辑
java·开发语言
Alice-YUE3 小时前
ai对话平台流式响应输出怎么实现?
前端·笔记·ai·语言模型
呆萌很3 小时前
【GO】goroutine 协程练习题
golang
1candobetter3 小时前
JAVA后端开发——多模块 Maven 项目 POM 管理规范实践
java·开发语言·maven
一个public的class3 小时前
前后端 + Nginx + Gateway + K8s 全链路架构图解
前端·后端·nginx·kubernetes·gateway
张忠琳3 小时前
【openclaw】OpenClaw Tasks 模块超深度架构分析
ai·架构·openclaw