Go语言如何搭建网站程序
首先打开你最喜爱的编辑器,编写如下所示的几行代码,并将其保存为 hello.go。
package main import ( log net/http func helloHandler(w http.ResponseWriter, r *http.Request) { io.WriteString(w, Hello, world! ) func main() { http.HandleFunc( /hello , helloHandler) err := http.ListenAndServe( :8080 , nil) if err != nil { log.Fatal( ListenAndServe: , err.Error()) }
我们引入了 Go语言标准库中的 net/http 包,主要用于提供 Web 服务,响应并处理客户端(浏览器)的 HTTP请求。
同时,使用 io 包而不是 fmt 包来输出字符串,这样源文件编译成可执行文件后,体积要小很多,运行起来也更省资源。
接下来,让我们简单地了解 Go语言的 http 包在上述示例中所做的工作。
net/http 包简介可以看到,我们在 main() 方法中调用了 http.HandleFunc(),该方法用于分发请求,即针对某一路径请求将其映射到指定的业务逻辑处理方法中。如果你有其他编程语言(比如 Ruby、Python 或者 PHP 等)的 Web 开发经验,可以将其形象地理解为提供类似 URL 路由或者 URL 映射之类的功能。
在 hello.go 中,http.HandleFunc() 方法接受两个参数,第一个参数是 HTTP 请求的目标路径 /hello ,该参数值可以是字符串,也可以是字符串形式的正则表达式,第二个参数指定具体的回调方法,比如 helloHandler。
当我们的程序运行起来后,访问 http://localhost:8080/hello,程序就会去调用 helloHandler() 方法中的业务逻辑程序。
在上述例子中, helloHandler() 方法是 http.HandlerFunc 类型的实例,并传入 http.ResponseWriter 和 http.Request 作为其必要的两个参数。http.ResponseWriter 类型的对象用于包装处理 HTTP 服务端的响应信息。
我们将字符串 Hello, world! 写入类型为 http.ResponseWriter 的 w 实例中,即可将该字符串数据发送到 HTTP 客户端。第二个参数 r *http.Request 表示的是此次 HTTP 请求的一个数据结构体,即代表一个客户端,不过该示例中我们尚未用到它。
还看到,在 main() 方法中调用了 http.ListenAndServe(),该方法用于在示例中监听 8080 端口,接受并调用内部程序来处理连接到此端口的请求。如果端口监听失败,会调用 log.Fatal() 方法输出异常出错信息。
正如你所见,main() 方法中的短短两行即开启了一个 HTTP 服务,使用 Go语言的 net/http 包搭建一个 Web 是如此简单!当然,net/http 包的作用远不止这些,我们只用到其功能的一小部分。
试着编译并运行当前的这份 hello.go 源文件:
$ go run hello.go
然后在浏览器访问 http://localhost:8080/hello,会看到如下图所示的界面。
![浏览器输出结果](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/20/20210720_60f63ef4a4f81.gif)
图:浏览器的输出结果
22603.html
gophppythonWeb数据结构相关文章
- GoLand 2022 mac/win中文(GO语言集成开发工具环境)
- 2023-03-03:请用go语言调用ffmpeg,摄像头捕获并编码为h264文件,不管音频。
- 2023-03-08:x265的视频编码器,不用ffmpeg,用libx265.dll也行。请用go语言调用libx265.dll,将yuv文件编码成h265文
- Go语言中常见100问题-#15 Missing code documentation
- 在线客服系统源码编译Golang语言下go build命令构建二进制程序
- 「Go工具箱」go语言csrf库的使用方式和实现原理
- 开心档之Go 语言数据类型
- [译] Go sync.Once 的妙用
- Go语言程序的编译和运行
- Go语言宕机(panic)——程序终止运行
- Go语言宕机恢复(recover)——防止程序崩溃
- Go语言类型分支(switch判断空接口中变量的类型)
- Go语言go mod包依赖管理工具使用详解
- go test命令(Go语言测试命令)完全攻略
- Go语言圣经–并发的循环习题详解编程语言
- Go语言圣经–接口约定习题2详解编程语言
- 使用Go语言来操作Oracle数据库(go语言oracle)
- Go语言使用类型断言来识别错误
- Go语言Socket编程详解
- Linux系统下GO语言快速安装指南(linuxgo语言安装)
- Go 语言在极小硬件上的运用(一)
- 语言结合SQL Server,Go谱写新篇章(sqlserver的go)
- 如何在Linux上安装Go语言?——简单易懂的指南(linux安装go语言)
- 关键字在SQL Server中利用GO关键字实现更优化的操作(sqlserver中go)
- Go语言操作Oracle数据库技术实践(go操作oracle)
- ODBC数据驱动程序连接Oracle数据库Go语言之旅(go使用oracle)
- 创建第一个Go语言程序Hello,Go!
- 浅谈Go语言中字符串和数组
- Go语言struct类型介绍