本文摘自php中文网,作者coldplay.xixi,侵删。

golang如何做一个服务器?
golang做一个服务器的方法:
我们知道,golang中的net/http包对网络的支持非常好,这样会让我们比较容易的建立起一个相对简单的服务器,我们来看一段代码
1 2 3 4 5 6 7 | func sayHi(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hi" )
}
func main() {
http.HandleFunc( "/sayHi" , sayHi)
log.Fatal(http.ListenAndServe( "localhost:8080" , nil))
}
|
这里就建立起了一个比较简单的服务器,这个是什么意思呢?现在先大概的说一下,这里监听了一个我们本机的端口,然后接受客户端的请求,再响应给客户端相应的数据。
我们再来看一段代码
1 2 3 4 5 6 7 8 | func sayHi(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hi" )
}
func main() {
serveMux := http.DefaultServeMux
serveMux.HandleFunc( "/sayHi" , sayHi)
log.Fatal(http.ListenAndServe( "localhost:8080" , serveMux))
}
|
这两段代码作用是一样的,只是在写法上面有点区别,我们来分析一下这些Handler,HandlerFunc,DefaultServeMux 都是干什么用的。
第一段代码中,HandleFunc这个函数的作用我们看看源码。
1 2 3 | func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
DefaultServeMux.HandleFunc(pattern, handler)
}
|
在源码中,调用这个函数,又会在其中调用一个方法。
1 2 3 | func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
mux.Handle(pattern, HandlerFunc(handler))
}
|
这个方法是定义在ServeMux结构体上的,那么这个ServeMux具体又是干什么的?现在先不用管,我们跟着源码往下看,这里调用了一个定义在ServeMux结构体上的Handle方法,我们来看看这个方法具体又有什么作用。
阅读剩余部分
相关阅读 >>
golang 四则运算 计算器 yacc 归约
2.golang 操作elasticsearch-7
go语言入门:第一个 go 程序
聊聊gost的hashset
kotlin coroutines vs goroutines
golang判断是否存在不存在就创建文件
聊聊gost的gounterminated
go语言标准库之context
分析go中的类型比较
golang(0)的安装和vscode开发环境
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » golang如何做一个服务器?