From 0a286d150c86914f188c180d7189e29b4ca9e89b Mon Sep 17 00:00:00 2001 From: yumaojun03 <719118794@qq.com> Date: Sun, 28 Dec 2025 12:01:22 +0800 Subject: [PATCH] =?UTF-8?q?```=20docs(day01):=20=E5=AE=8C=E5=96=84Go?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E5=9F=BA=E7=A1=80=E6=95=99=E7=A8=8B=E7=9A=84?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E5=92=8C=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E6=90=AD=E5=BB=BA=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新README.md,将基础语法等章节转换为链接形式,便于导航 - 重构环境搭建文档,添加vscode开发环境配置说明 - 增加Go项目开发实践demo,包含完整的项目初始化流程 - 添加示例代码文件,演示Hello World程序和数据库连接 - 补充Go模块依赖管理文件go.mod和go.sum ``` --- day01/README.md | 2 +- day01/env/README.md | 50 ++++++++++++++++++++++++++++++++++++++++- day01/env/demo/go.mod | 15 +++++++++++++ day01/env/demo/go.sum | 12 ++++++++++ day01/env/demo/main.go | 25 +++++++++++++++++++++ day01/env/image.png | Bin 0 -> 31141 bytes 6 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 day01/env/demo/go.mod create mode 100644 day01/env/demo/go.sum create mode 100644 day01/env/demo/main.go create mode 100644 day01/env/image.png diff --git a/day01/README.md b/day01/README.md index b17825d..41595aa 100644 --- a/day01/README.md +++ b/day01/README.md @@ -18,7 +18,7 @@ + [第一个程序](./hello_world/README.md) + [开发环境搭建](./env/README.md) -+ 基础语法 ++ [基础语法](./syntax/README.md) + 基础类型 + 变量常量与值 + 变量作用域 diff --git a/day01/env/README.md b/day01/env/README.md index d9bc628..99c1cd4 100644 --- a/day01/env/README.md +++ b/day01/env/README.md @@ -20,8 +20,56 @@ Windows: 需要 配置容器, 基于DevContaienr来进行开发(Linux 容器, ## IDE与插件 +[vscode](https://code.visualstudio.com/) + + vscode: [Go 插件](https://marketplace.visualstudio.com/items?itemName=golang.Go) -## 基于vscode 做项目开发 +## 基于vscode 做项目开发(demo工程) + ++ 项目工程: vscode的工程目录 + +使用code cli 快速打开一个 vsocde 项目 +![alt text](image.png) + +创建一个Go项目: Demo工程: + ++ 初始化项目工程: +```sh +➜ demo git:(main) ✗ go mod init demo +go: creating new go.mod: module demo +``` ++ 使用vscode 打开demo工程: +```sh +cd demo && code . +``` + ++ 创建程序入口: main.go +```go +// Hello World 示例程序 +// package 包的名称, 每个go文件都必须属于某个包, 程序入口 必须是 main 包, main函数 +package main + +// import Go 引入依赖的语法 +// go 的内在库中包含了大量常用的包, 安装了go语言就自带 +// 三方包, 需要独立安装才能使用 比如 gorm: go install gorm.io/gorm +import ( + "fmt" + + "gorm.io/driver/sqlite" + // 三方包: go install gorm.io/gorm + // 直接使用 go mod tidy 安装: 安装项目中所有没有安装的包 + "gorm.io/gorm" +) + +// main 函数是程序入口: 编译后运行, go run快捷运行 +func main() { + fmt.Println("Hello, World!") + db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) + if err != nil { + panic("failed to connect database") + } + fmt.Println(db) +} +``` diff --git a/day01/env/demo/go.mod b/day01/env/demo/go.mod new file mode 100644 index 0000000..50640e1 --- /dev/null +++ b/day01/env/demo/go.mod @@ -0,0 +1,15 @@ +module demo + +go 1.25.5 + +require ( + gorm.io/driver/sqlite v1.6.0 + gorm.io/gorm v1.31.1 +) + +require ( + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect + golang.org/x/text v0.20.0 // indirect +) diff --git a/day01/env/demo/go.sum b/day01/env/demo/go.sum new file mode 100644 index 0000000..330dd09 --- /dev/null +++ b/day01/env/demo/go.sum @@ -0,0 +1,12 @@ +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ= +gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= diff --git a/day01/env/demo/main.go b/day01/env/demo/main.go new file mode 100644 index 0000000..efbc1e1 --- /dev/null +++ b/day01/env/demo/main.go @@ -0,0 +1,25 @@ +// Hello World 示例程序 +// package 包的名称, 每个go文件都必须属于某个包, 程序入口 必须是 main 包, main函数 +package main + +// import Go 引入依赖的语法 +// go 的内在库中包含了大量常用的包, 安装了go语言就自带 +// 三方包, 需要独立安装才能使用 比如 gorm: go install gorm.io/gorm +import ( + "fmt" + + "gorm.io/driver/sqlite" + // 三方包: go install gorm.io/gorm + // 直接使用 go mod tidy 安装: 安装项目中所有没有安装的包 + "gorm.io/gorm" +) + +// main 函数是程序入口: 编译后运行, go run快捷运行 +func main() { + fmt.Println("Hello, World!") + db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) + if err != nil { + panic("failed to connect database") + } + fmt.Println(db) +} diff --git a/day01/env/image.png b/day01/env/image.png new file mode 100644 index 0000000000000000000000000000000000000000..e1aadbebfaf12267b48899a641ac3b549233cdfa GIT binary patch literal 31141 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 n6vf