开始使用 Go 和 Web:你好,世界!

Golang 作为一种服务器端语言越来越受欢迎。开发人员将其作为 PHP、Node.js、Ruby、Python 等更常见技术的替代品。Go 的吸引力之一是其资源占用低。如果预算有限,开发人员可以使用 Go 构建功能强大的应用程序,并以低成本在低端基础设施上托管它们。

本指南旨在简单介绍 Go,并了解如何使用它来构建 Web 应用程序。本教程面向初学者;但是,经验丰富的开发人员也可以浏览它。你永远不知道——你可能会学到一两件事。闲聊够了,让我们开始吧。

先决条件

要遵循本指南,您需要在计算机上安装 Go。按照说明下载并安装 Go:下载并安装 Go。

您需要具备一些 HTML 知识才能理解所说明的概念。如果您以前没有写过 HTML,那么 HTML 很容易掌握。如果您对 HTML 一无所知,请按照本指南学习 HTML

您需要具备一些 HTTP 知识才能更好地理解本指南。HTTP 是 Web 的传输协议。按照本指南了解 HTTP 学习 HTTP

你好,世界,Go

要开始使用 Go,请打开您的工作文件夹并创建一个名为“main.go”的新文件。将以下代码添加到“main.go”

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

保存文件并在工作目录中打开一个新的终端会话。运行以下命令:

go run main.go

您应该看到以下输出:

Hello, World!

恭喜!您已经使用 Go 创建了第一个程序。暂停一下,感受一下这种美妙的感觉。:) 现在回去工作。

这只是开始的热身。

你好,世界,上网

一切都很好。我们能够使用 Go 在终端上打印出“Hello, World!”,但这不是本指南的目的。真正的目的是使用 Go 在网页上打印出“Hello, World!”。那么我们该怎么做呢?

首先,注释掉你刚刚在 `main.go` 中编写的代码。在注释块的顶部,给它起一个通用的名称,例如“步骤 1”。

在注释块上方添加以下代码:

package main

import "net/http"
import "fmt"

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
        fmt.Fprintf(w, "

Hello, World!

") }) http.ListenAndServe(":80", nil) }

保存文件并运行。在浏览器中访问“localhost”,您应该会在网页上看到文本“Hello, World!”。

Hello World web page

动态问候

太棒了!我们刚刚成功使用 Go 创建了一个 Web 服务器并打印了文本“Hello, World!”。下一步是让文本根据用户输入发生变化。为什么?这样我们就可以理解服务器端语言的用途以及它们如何使我们的网页动态化。

注释掉您在上一步中编写的代码,并在注释块的顶部为其指定一个有用的名称,如“步骤 2”。

在注释块上方添加以下代码:

package main

import "fmt"
import "net/http"

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if r.FormValue("q") != "" {
            fmt.Fprintf(w, `
                
                    

Hello, %s

`, r.FormValue("q")) return } fmt.Fprintf(w, `
`) }) http.ListenAndServe(":80", nil) }

停止服务器(CTRL + C)。保存文件并运行。在浏览器中访问“localhost”,您应该会看到一个带有标签“输入您的姓名”和“提交”按钮的表单输入。

Dynamic Web Page Go Form Input

输入您的姓名并点击“提交”。如果您的姓名是“Jared”,您将看到文本“Hello, Jared”。否则,您将看到您在表单中输入的姓名。

Dynamic Web Page Go Form Result

柜台

接下来,我们来尝试一些不同的东西。计数器怎么样?

注释掉您在上一步中编写的代码,并在注释块的顶部为其指定一个有用的名称,如“步骤 3”。

在注释块上方添加以下代码:

package main

import "fmt"
import "strconv"
import "net/http"

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if r.Method == "POST" {
            count, _ := strconv.Atoi(r.FormValue("counter"))
            count++
           fmt.Fprintf(w, `
            
                
Reset `, count) return } fmt.Fprintf(w, `
Reset `) }) http.ListenAndServe(":80", nil) }

保存文件并运行。在浏览器中访问“localhost”,您应该会看到一个表单输入,其中包含数字“1”,标签“计数器”和“添加”按钮。

Dynamic Web Page Counter

单击该按钮应该会增加计数器的值。

结论

恭喜!您已成功使用 Go 构建了第一个 Web 应用程序,从简单的“Hello, World!”开始,然后发展为具有用户交互的动态网页。您已经了解了如何使用 Go 设置基本 Web 服务器、处理用户输入以及创建计数器。这仅仅是个开始 — Go 的简单性和效率使其成为构建可扩展 Web 应用程序的绝佳选择。

随着您继续探索 Go,您会发现更多高级功能和库,它们可以帮助您构建强大而高效的应用程序。继续尝试和构建,很快您就会掌握 Go 并立即创建复杂的 Web 应用程序。祝您编码愉快!

请继续关注更多教程。再见!

资源

  • GitHub 仓库
  • 学习 HTML
  • 学习 HTTP
  • 学习 Go