ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

《Build Web Application with Golang》示例代码工作区(GOPATH)搭建指南

《Build Web Application with Golang》示例代码工作区(GOPATH)搭建指南 文档教程【免费下载链接】build-web-application-with-golangA golang ebook intro how to build a web with golang项目地址https://gitcode.com/gh_mirrors/bu/build-web-application-with-golang点击查看免费下载导读本指南以仓库中 pt-br/code/readme.md 的工作区Workspace配置说明为骨架讲解如何正确设置GOPATH环境变量让本书葡萄牙语版配套的全部章节示例代码可以从任意目录编译运行。读完本文你将掌握 GOPATH 目录规范、示例代码的验证方法与逐章运行流程并能顺利跑通从 Hello World 到 Web 表单、数据库操作的完整示例链。一、为什么需要设置 GOPATHpt-br/code/readme.md是一份极简但关键的配置说明它只有一条核心指令为避免工作区问题并能够从该路径下的任意文件夹中进行开发请将环境变量GOPATH设置为当前目录pt-br/code的路径。这条指令针对的是一个实际痛点本书示例代码采用传统的 GOPATH 目录布局而不是现代 Go Module 布局。在 GOPATH 模式下Go 工具链go build、go run、go get依赖环境变量GOPATH来定位三类目录src/存放源代码pkg/存放编译后的包bin/存放编译生成的二进制文件。如果GOPATH未指向包含src/的目录即使源码本身没有错误go run也会报出 cannot find package 之类的导入错误——这就是 readme 中所谓 workspace issues 的典型来源。把GOPATH指向pt-br/code后工具链就能从pt-br/code/src解析所有内部导入。二、仓库示例代码的目录结构设置GOPATH之前先理解配套代码的组织方式。pt-br/code目录下是标准 GOPATH 布局pt-br/code/ ├── readme.md # 工作区配置说明本文核心依据 └── src/ ├── apps/ # 各章节可独立运行的示例程序 │ ├── ch.1.2/ # 第 1.2 节Hello World 自定义包导入 │ ├── ch.2.1/ # 第 2.1 节UTF-8 支持 │ ├── ch.2.3/ # 第 2.3 节if/switch/循环/defer │ ├── ch.2.6/ # 第 2.6 节接口与类型断言 │ ├── ch.3.4/ # 第 3.4 节自定义 http.Handler │ ├── ch.4.1/ # 第 4.1 节基于模板的登录表单 │ └── ch.5.2/ # 第 5.2 节MySQL 数据库操作 └── mymath/ # 本书自建的数学示例包 └── sqrt.go其中src/mymath/是本书自建的辅助包被第 1.2 节示例导入这正是检验工作区配置是否正确的关键用例。三、三分钟完成工作区配置步骤 1确定 GOPATH 目标路径将GOPATH设置为pt-br/code的绝对路径即仓库根目录下pt-br/code对应的完整路径。步骤 2设置环境变量Linux / macOSbash/zshexport GOPATH/path/to/build-web-application-with-golang/pt-br/code export PATH$PATH:$GOPATH/binWindowsPowerShell$env:GOPATH D:\path\to\build-web-application-with-golang\pt-br\code $env:PATH ;$env:GOPATH\bin说明将$GOPATH/bin加入PATH是为了直接调用go get或go install产生的可执行文件若仅运行go run则非必需。若希望配置长期生效请把上述语句写入~/.bashrcLinux/macOS或系统环境变量Windows。步骤 3验证配置go env GOPATH应输出你设置的绝对路径。之后进入任意章节目录即可直接运行示例。四、用 Hello World 示例验证工作区是否生效src/apps/ch.1.2/main.go的注释明确说明其用途执行此文件以验证你的工作区是否正确配置。如果没有出现Hello World请重新配置环境。// Código de exemplo para o Capítulo 1.2 do Build Web Application with Golang // Propósito: Execute este arquivo para verificar se o seu workspace está corretamente configurado. // Para executar, navegue até o diretório onde ele estiver salvo e digite no console go run main.go // Se o texto Hello World não aparecer, então configure seu ambiente novamente. package main import ( fmt mymath ) func main() { fmt.Printf(Hello, world. Sqrt(2) %v\n, mymath.Sqrt(2)) }这段代码的关键在于import mymath。运行命令cd pt-br/code/src/apps/ch.1.2 go run main.go预期输出Hello, world. Sqrt(2) 1.414213562373095判定标准输出Hello, world.即代表GOPATH配置正确Go 工具链成功解析了mymath包若报错说明GOPATH没有指向包含src/的pt-br/code目录请回到第三节重新设置。mymath包本身位于 pt-br/code/src/mymath/sqrt.go用牛顿迭代法实现平方根package mymath func Sqrt(x float64) float64 { z : 0.0 for i : 0; i 1000; i { z - (z*z - x) / (2 * x) } return z }五、GOPATH 模式下编译运行的常见问题导入包找不到go run报cannot find package mymath几乎可以断定GOPATH未设置或未指向pt-br/code相对路径失效部分章节示例如第 4.1 节的login.gtpl模板通过相对路径读取文件请务必在该章节目录内执行go run main.go而非在仓库根目录执行go get拉取依赖部分示例依赖第三方远程包需要先执行go get见第七节。六、配套代码全景从语法到 Web 实战工作区配置完成后pt-br/code/src/apps/下所有章节示例均可运行它们共同构成从 Go 基础到 Web 开发的递进链路章节目录演示主题运行方式ch.1.2自定义包导入与工作区验证go run main.goch.2.1控制台 UTF-8 多语言输出go run main.goch.2.3if/switch/goto/循环/defergo run main.goch.2.6接口、嵌入与方法集go run main.goch.3.4自定义http.Handler路由go run main.go后访问http://localhost:9090ch.4.1模板驱动的登录表单go run main.go后访问http://localhost:9090/loginch.5.2MySQL 数据表读写需先完成第七节的数据库准备Web 侧示例的运行特征第 3.4 节示例 ch.3.4/main.go 展示了不依赖默认路由的自定义ServeHTTP实现MyMux结构体实现http.Handler接口仅当请求路径为/时返回 Hello myroute!否则返回 404最后通过http.ListenAndServe(:9090, mux)启动服务。这是理解net/http路由机制的最小可运行样本。第 4.1 节示例 ch.4.1/main.go 则演示了表单处理流程GET请求渲染login.gtpl模板POST请求解析表单参数并打印username/password同时sayhelloName处理器展示了r.ParseForm()与r.Form的读取方式。注意该示例依赖同目录下的模板文件必须在目录内运行。七、带数据库依赖的章节如何准备以 ch.5.2 为例并非所有章节都能直接运行。pt-br/code/src/apps/ch.5.2/readme.md给出了 5 个明确的准备步骤安装并运行 MySQL按main.go中的常量创建用户和数据库DB_USER user DB_PASSWORD DB_NAME test即创建 MySQL 用户user密码为空和数据库test执行schema.sql创建userinfo表。表结构见 pt-br/code/src/apps/ch.5.2/schema.sqlCREATE TABLE userinfo ( uid INT(10) NOT NULL AUTO_INCREMENT, username VARCHAR(64) NULL DEFAULT NULL, departname VARCHAR(64) NULL DEFAULT NULL, created DATE NULL DEFAULT NULL, PRIMARY KEY (uid) );执行go get下载安装示例引用的远程依赖包数据库驱动等执行go run main.go启动程序。同样地ch.5.3、ch.5.4、ch.5.5也各自带有readme.md与schema.sqlch.5.6则分mongodb/与redis/两个子目录分别说明运行时请先阅读对应readme.md并确保依赖服务可用。八、从 GOPATH 到 Go Modules现代开发环境的适配说明需要说明的是本书示例代码采用经典的 GOPATH 布局这是 2010 年代 Go 项目的主流组织方式。自 Go 1.11 起官方引入 Go ModulesGOPATH不再是唯一的工作区机制但本书仓库中的pt-br/code以及en/code、de/code、fa/code、th/code等同构目录仍保持 GOPATH 结构因此若你使用较新版本的 Go仍可按本文方法设置GOPATH后以GO111MODULEoff或直接在旧布局下运行示例具体以你的 Go 版本行为为准本文以当前仓库实际内容为准仓库内未提供go.mod文件示例间的导入关系完全依赖 GOPATH 解析因此readme.md 中设置GOPATH的指引是运行这套代码的前提条件。小结pt-br/code/readme.md用一句话点破了整棵示例代码树的运行前提把GOPATH指向pt-br/code。配合第 1.2 节 Hello World 示例做冒烟验证、按章节目录逐层运行、对数据库章节先读readme.md再建库建表你就能完整跑通这本书从语言基础到 Web 实战的全部配套代码。核心参考文件工作区说明、工作区验证示例、mymath 包实现、数据库章节准备说明。赞分享文档教程【免费下载链接】build-web-application-with-golangA golang ebook intro how to build a web with golang项目地址https://gitcode.com/gh_mirrors/bu/build-web-application-with-golang点击查看免费下载相关推荐使用 GOPATH 搭建 Go Web 开发工作区《Build Web Application with Golang》德语版示例代码实践指南使用 GOPATH 搭建 Go Web 开发工作区《Build Web Application with Golang》德语版示例代码实践指南 本文以开源电子文档教程Build Web Application with Golang 精读1.2$GOPATH 与 Workspace 工作区的完整实战指南Build Web Application with Golang 精读1.2$GOPATH 与 Workspace 工作区的完整实战指南 本文是《Bui文档教程build-web-application-with-golang 第 1.2 章深度解析掌握 $GOPATH 与 Go 工作区布局build web application with golang 第 1.2 章深度解析掌握 $GOPATH 与 Go 工作区布局 《Build Web A文档教程上一篇Jekyll 故障排查完全指南从安装失败到生产环境构建异常的逐类解决方案下一篇scikit-learn 0.23 版本全解析GLM 回归、直方图梯度提升增强与 API 规范化变革创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表