前言
我们都知道,go语言的编程方式是duck type,也就是,接口和实现类是完全解耦的,如果一个接口实现了某个接口的方法,则实现了这个接口。这给编程和灵活性带来了极大的可变性和灵活性。
Go中的ServerHTTP
在go语言中如果要开启一个Web服务,则要实现http.Handler提供的ServerHTTP方法
这是Handler接口的源码:
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
开启一个简单的Http服务:
main(){
server := http.Server{
Addr:"localhost:8080",
}
server.ListenAndServer()
}
通过实现Handler接口来开启Http服务
package main
import (
"fmt"
"net/http"
)
type HelloHandler struct {
}
func (HelloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprintf(w, "hello")
}
type WorldHandler struct {
}
func (WorldHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprintf(w, "world")