2、Go Web 编程 - 一切从 Hello World 开始

作者: 温新

图书: 【Go Web 开发简易 Blog】

阅读: 454

时间: 2024-09-08 05:31:14

hi,我是温新,一名 PHPer

还记得初学 PHP 的时候,从 Hello World 开始。即使到了 Go,我们还是从它的开始吧。

Web 开发初体验

目录创建

Linux 中,我使用的是非 root 用户。因此在创建目录时,就需要在你有权限的地方创建目录了。

你可以在任意位置创建你的 go-web 开发目录,以下是我的开发位置。

mkdir /home/www-go/blog/1
cd /home/www-go/blog/1

创建控制器

blog/1 目录中创建一个 main.go 文件,它是程序入口文件。我们可以把这个文件当做是控制器来看看,下面就开始编写程序了。

main.go

package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, request *http.Request) {
		w.Write([]byte("Hello World"))
	})

	err := http.ListenAndServe(":8888", nil)
	if err != nil {
		fmt.Println("HTTP 服务启动失败:", err)
	}
}

一个简单的 Hello World Web 应用就完成了。菜已经准备好了,该把它送出去了。

go run main.go

执行该命令后,会发现终端被阻塞了,而且没有任何信息出现。如果你也是这种情况,那么恭喜你,你已经成功地启动了这个服务了。

命令执行后,没有消息,就是最好的消息。一旦有信息出现,那么大概率意味着程序出错了。

既然程序已经启动了,那么就在浏览器中访问这它吧。

// 这两种方式都可以访问
http://localhost:8888/
http://127.0.0.1:8888/

一切顺利的话,你应该在浏览器中看到 Hello World。恭喜你,已经完成了简单的 Web 开发了。

main.go 已经充当控制器了,没有视图,浏览器是怎么显示内容的?全靠 w.Write() 函数了。

关于模板下篇文章再讲。本文到这里就结束了。下面的内容仅作复习使用。

回顾 net/http

func HandleFunc(pattern string, handler func(ResponseWriter, *Request))
func ListenAndServe(addr string, handler Handler) error
  • HandleFunc 接受一个字符串类型的模式(pattern)和一个处理函数(handler)。
  • ListenAndServe 接受一个地址字符串(addr)和一个处理器(handler)。

内容输出有三种方法,大家可以试试:

// 方式一
w.Write([]byte("Hello World"))
// 方式二
fmt.Fprintf(w, "Hello World")
// 方式三
io.WriteString(w, "Hello World")io.WriteString(w, "Hello World")
请登录后再评论