1、初始化Fastgo项目仓库
1、初始化fastgo项目仓库
项目开发第一步,初始化一个项目目录,并根据这个目录规范,添加必要的目录及文件 golang-standards/project-layout
初始化一个go项目,分为以下几步:
- 创建项目目录
- 初始化目录为go模块
- 初始化目录为git仓库
- 创建需要的目录
- 创建helloworld 程序
步骤一:创建项目目录
开发Go项目第一步就是创建一个项目目录。现在go模块管理的都用Go Modules。虽然在使用gomodules的亲看过下,不需要在设置GOPATH环境变量。但是为了提高项目维护性,这里还是建议将项目放在GOPATH目录下。
初始化目录,操作命令如下:
(base) dujie@MacBook-Pro GolandProjects % mkdir -p $GOPATH/src/gitlab.com/onexstack/fastgo
(base) dujie@MacBook-Pro GolandProjects % cd $GOPATH/src/gitlab.com/onexstack/fastgo
(base) dujie@MacBook-Pro fastgo % echo "## fastgo项目" >> README.md
步骤二:初始化目录为Go模块
go项目都需要将目录初始化一个go模块。所以,这里需要将fastgo目录初始化一个go模块。
(base) dujie@MacBook-Pro fastgo % go mod init # 初始化Go模块
go: creating new go.mod: module gitlab.com/onexstack/fastgo
(base) dujie@MacBook-Pro fastgo % go work init . # 初始化Go工作区(仅限多模块管理场景),生成go.work文件
(base) dujie@MacBook-Pro fastgo % go work use . # 添加当前模块到go工作区
步骤三:初始化目录为Git仓库
当前Go项目基本上都使用git来管理项目代码,所以需要将目录初始化为一个git仓库
初始化仓库第一步,就是在当前目录添加一个.gitignore
文件,里面包含不期望git跟踪的文件,例如:临时文件等。可以使用生成工具来gitignore.io生成.gitignore
# Created by https://www.toptal.com/developers/gitignore/api/macos
# Edit at https://www.toptal.com/developers/gitignore?templates=macos
# 备份文件
*.bak
*~
# Go工作区文件。go项目开发中,不建议将go工作区文件提交到仓库中
go.work
go.work.sum
# 日志文件
*.log
# 自定义文件
/_output
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
# End of https://www.toptal.com/developers/gitignore/api/macos
可以执行以下命令将go项目仓库初始化为一个git仓库
(base) dujie@MacBook-Pro fastgo % git init # 初始化当前目录为Git仓库
Initialized empty Git repository in /Users/dujie/go/src/gitlab.com/onexstack/fastgo/.git/
(base) dujie@MacBook-Pro fastgo % git config user.name 杜杰 # 设置仓库级别的用户名
(base) dujie@MacBook-Pro fastgo % git config user.email dujie@cnpiec.com.cn # 设置仓库级别邮箱
(base) dujie@MacBook-Pro fastgo % git config --global credential.helper store #永久保存凭据
(base) dujie@MacBook-Pro fastgo % git add . # 添加所有被Git追踪的文件到暂存区
(base) dujie@MacBook-Pro fastgo % git remote add origin http://10.122.25.15/kubernetes/fastgo # 将本地仓库与远程仓库相关联
(base) dujie@MacBook-Pro fastgo % git commit -m "feat: 第一次提交" # 将暂存区的内容添加到本地仓库
[main (root-commit) 61f41c6] feat: 第一次提交
3 files changed, 7 insertions(+)
create mode 100644 README.md
create mode 100644 go.mod
create mode 100644 go.work
之后就可以在该目录下开发代码,并根据需要提交代码。提交后的源码目录内容如下:
(base) dujie@MacBook-Pro fastgo % ll -a
total 32
drwxr-xr-x@ 7 dujie staff 224 Apr 1 14:21 .
drwxr-xr-x@ 3 dujie staff 96 Apr 1 14:08 ..
drwxr-xr-x@ 12 dujie staff 384 Apr 1 14:18 .git
-rw-r--r--@ 1 dujie staff 859 Apr 1 14:21 .gitignore
-rw-r--r--@ 1 dujie staff 16 Apr 1 14:09 README.md
-rw-r--r--@ 1 dujie staff 46 Apr 1 14:11 go.mod
-rw-r--r--@ 1 dujie staff 17 Apr 1 14:11 go.work
步骤四:创建需要的目录
执行以下命令创建需要的目录:
(base) dujie@MacBook-Pro fastgo % mkdir -p cmd configs docs scripts
提前创建一些符合目录规范的空目录可以起到以下两个作用:
- 提前规划目录相当于提前规划未来的功能,将未来要实现的功能以目录的形式固化在项目仓库中,起到记录的作用
- 提前创建目录有利于后续文件按照功能存放在预先规划好的目录中,从而使项目更加规范。否则不同开发者可能会根据各自的开发习惯,创建各种各样的目录结构和目录名称。
因为Git默认不会追踪空目录,所以需要在空目录下创建.keep文件
(base) dujie@MacBook-Pro fastgo % touch configs/.keep docs/.keep scripts/.keep cmd/.keep
步骤五:创建helloworld程序
(base) dujie@MacBook-Pro fastgo % mkdir -p cmd/fg-apiserver
cmd/fg-apiserver/main.go内容如下
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
编译并运行
(base) dujie@MacBook-Pro fastgo % gofmt -s -w ./ # 格式化Go源码
(base) dujie@MacBook-Pro fastgo % go build -o _output/fg-apiserver -v cmd/fg-apiserver/main.go # 编译fg-apiserver组件源码
command-line-arguments
(base) dujie@MacBook-Pro fastgo % ./_output/fg-apiserver # 启动fg-apiserver组件
Hello World!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 J.のblog!
评论