Go Web 示例: 密码散列 (bcrypt)

密码散列 (bcrypt) 这个例子将展示如何使用 bcrypt 散列密码。 为此,我们必须像这样获取 golang bcrypt 库: $ go get golang.org/x/crypto/bcrypt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 // passwords.

Go Web 示例: 模板

简介 Go 的 html/template 包为 HTML 模板提供了丰富的模板语言。 它主要用于 Web 应用程序中,以在客户端浏览器中以结构化方式显示数据。 Go 模板语言的一大好处是自动转义数据。 无需担心 XSS 攻击,因为 Go 会解析 HTML 模板并在将其显示给浏览器之前转义所有输入。 第一个模板 在 Go 中编写模板非常简单。 此示例显示了一个 TODO 列表,在 HTML 中编写为无序列表 (ul)。 在渲染模板时,传入的数据可以是任何一种 Go 的数据结构。 它可能是一个简单的字符串或数字,甚至可以是嵌套的数据结构,如下例所示。 要访问模板中的数据,最顶层的变量是通过 {{.}} 访问。 花括号内的点称为管道和数据的根元素。 1 2 3 4 5 6 7 8 data := TodoPageData{ PageTitle: "My TODO list", Todos: []Todo{ {Title: "Task 1", Done: false}, {Title: "Task 2", Done: true}, {Title: "Task 3", Done: true}, }, } 1 2 3 4 5 6 7 8 9 10 <h1>{{.

Go Web 示例: 表单

表单 此示例将展示如何模拟联系表单并将消息解析为结构体。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 // forms.go package main import ( "html/template" "net/http" ) type ContactDetails struct { Email string Subject string Message string } func main() { tmpl := template.

Go Web 示例: 资源和文件

资源和文件 此示例将展示如何从特定目录提供静态文件,如 CSS、JavaScript 或图像。 1 2 3 4 5 6 7 8 9 10 11 // static-files.go package main import "net/http" func main() { fs := http.FileServer(http.Dir("assets/")) http.Handle("/static/", http.StripPrefix("/static/", fs)) http.ListenAndServe(":8080", nil) } $ tree assets/ assets/ └── css └── styles.

Go Web 示例: MySQL 数据库

简介 在某个时间点,你希望你的 Web 应用程序存储和检索数据库中的数据。 当你处理动态内容、为用户提供表单以输入数据或存储登录名和密码凭据以供用户对其进行身份验证时,几乎总是如此。 为此,我们有数据库。 数据库有各种形式和形式。 整个网络中一种常用的数据库是 MySQL 数据库。 它已经存在了很长时间,并且已经证明了它的位置和稳定性的次数比你想象的要多。 在这个例子中,我们将深入研究 Go 中数据库访问的基础知识,创建数据库表,存储数据并再次检索它。 安装 go-sql-driver/mysql 包 Go 编程语言带有一个名为“database/sql”的方便的包,用于查询各种 SQL 数据库。 这很有用,因为它将所有常见的 SQL 功能抽象到一个 API 中供你使用。 Go 不包括数据库驱动程序。 在 Go 中,数据库驱动程序是一个包,它实现了特定数据库(在我们的例子中是 MySQL)的底层细节。 你可能已经猜到了,这对于保持向前兼容很有用。 因为,在创建所有 Go 包时,作者无法预见未来每个数据库都会上线,并且支持每个可能的数据库将有大量的维护工作。 要安装 MySQL 数据库驱动程序,请转到你选择的终端并运行: 1 go get -u github.