golang如何做一个服务器?


本文摘自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 仿spring ioc/aop 之8 扫码3

手撸golang 仿spring ioc/aop 之7 扫码2

go cassandra 示例 1

手撸golang go与微服务 chatserver之1

go语言入门:第一个 go 程序

同样都是使用接口,java和go差距咋就这么大呢?

使用 google/wire 对 go 项目进行依赖注入

golang 四则运算 计算器 yacc 归约

golang 实现 rsa 的加密解密

json序列化在golang中的应用

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...