GO语言基础语法 | 青训营笔记2

60 阅读1分钟

实现一个简单的ToDo应用程序。代码和分析如下:

GO
package main

import (
    "html/template"
    "log"
    "net/http"
)

type Task struct {
    ID        int
    TaskTitle string
}

var tasks = []Task{
    {
        ID:        1,
        TaskTitle: "Go grocery shopping",
    },
    {
        ID:        2,
        TaskTitle: "Finish reading book",
    },
    {
        ID:        3,
        TaskTitle: "Pay bills",
    },
}

func renderTemplate(w http.ResponseWriter, tmpl string, tasks []Task) {
    tmpl := template.Must(template.ParseFiles("templates/" + tmpl + ".html"))
    err := tmpl.Execute(w, tasks)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    }
}

func indexHandler(w http.ResponseWriter, r *http.Request) {
    renderTemplate(w, "index", tasks)
}

func main() {
    http.HandleFunc("/", indexHandler)
    log.Fatal(http.ListenAndServe(":8000", nil))
}

以上代码实现了一个简单的ToDo应用程序,并且通过Web方式展示出来。接下来我们一起分析下代码吧。

首先,我们定义了一个Task结构体,包含了ID和TaskTitle两个字段,用于表示待办事项的ID和标题。var tasks = []Task{}则定义一个tasks变量,用于存储所有的待办事项。

然后,我们定义了一个renderTemplate函数,用于渲染HTML模板。template.Must(template.ParseFiles("templates/" + tmpl + ".html"))语句则通过文件名来解析模板。

接着,我们定义了一个indexHandler函数,该函数将使用renderTemplate函数来渲染HTML模板,并将所有待办事项作为参数传递给模板。

最后,我们使用http.HandleFunc()来将indexHandler函数与根路径"/"关联起来,并使用http.ListenAndServe()来启动Web服务器。

这个简单的Web项目展示了Go语言的快速开发能力和简单易用的语言特性。通过掌握Go语言的基础知识和Web编程的相关知识,我们可以快速开发出高质量的Web程序。