最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言實(shí)現(xiàn)一個(gè)Http Server框架(二) Server的抽象

 更新時(shí)間:2023年04月28日 09:39:51   作者:upper  
上一篇文章對(duì)http庫的基本使用做了說明,這篇文章主要介紹了如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單地httpServer,文中代碼示例非常詳細(xì),感興趣的朋友可以參考下

上一篇文章對(duì)http庫的基本使用做了說明,下面來實(shí)現(xiàn)一個(gè)簡(jiǎn)單地httpServer

package main  
  
import (  
    "fmt"  
    "log"  
    "net/http"  
)  
  
func home(w http.ResponseWriter, r *http.Request) {  
    fmt.Fprintf(w, "這是主頁")  
}  
  
func user(w http.ResponseWriter, r *http.Request) {  
    fmt.Fprintf(w, "這是用戶頁面")  
}  
  
func main() {  
    http.HandleFunc("/", home)  
    http.HandleFunc("/user", user)  
    log.Fatal(http.ListenAndServe(":8080", nil))  
}

此時(shí)啟動(dòng)服務(wù)并訪問8080端口,可以看到下面的頁面

但是如果我想同時(shí)啟動(dòng)多個(gè)server監(jiān)聽不同的端口該怎么辦? 我們可以從邏輯上抽象出一個(gè)Server,可以表示對(duì)某個(gè)端口進(jìn)行監(jiān)聽的實(shí)體,這樣必要的時(shí)候,我們就可以啟動(dòng)多個(gè)Server來監(jiān)聽不同的端口

首先我們來寫一個(gè)接口

type Server interface{
    //Route 設(shè)定一個(gè)路由,命中路由會(huì)執(zhí)行handlerFunc的代碼
    Route(pattern string handlerFunc http.HandlerFunc)
    //Start 用于啟動(dòng)服務(wù)
    Start(address string) error
}

實(shí)現(xiàn)Server接口

func (s *sdkHttpServer) Route(pattern string,handlerFunc http.HandlerFunc){
    http.HandleFunc(pattern,handlerFunc)
}

func (s *sdkHttpServer) Start(address string) error{
    http.ListenAndServer(address,nil)
}

func NewSdkHttpServer(name string) Server {
    return &sdkHttpServer{
        Name:name,
    }
}

現(xiàn)在我們已經(jīng)可以同時(shí)監(jiān)聽多個(gè)端口了

func main(){
    server := web.NewSdkHttpServer("my-test-server")
    
    server.Route("/",home)
    server.Route("/user",user)
    
    server.Start("8080")
}

雖然我們已經(jīng)對(duì)Server進(jìn)行了抽象,但是在請(qǐng)求處理的過程中仍然存在問題,就比如我們要實(shí)現(xiàn)一個(gè)用戶注冊(cè)的接口

所以我們需要繼續(xù)對(duì)Context也就是上下文做一下抽象,這里的Context是我們自定義的Context不是go原生的Context

到此這篇關(guān)于Go語言實(shí)現(xiàn)一個(gè)Http Server框架(二) Server的抽象的文章就介紹到這了,更多相關(guān)Go語言Http Server框架內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go高級(jí)特性探究之優(yōu)先級(jí)隊(duì)列詳解

    Go高級(jí)特性探究之優(yōu)先級(jí)隊(duì)列詳解

    Heap?是一種數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)常用于實(shí)現(xiàn)優(yōu)先隊(duì)列,這篇文章主要就是來和大家深入探討一下GO語言中的優(yōu)先級(jí)隊(duì)列,感興趣的可以了解一下
    2023-06-06
  • Go語言eclipse環(huán)境搭建圖文教程

    Go語言eclipse環(huán)境搭建圖文教程

    這篇文章主要介紹了Go語言eclipse環(huán)境搭建的方法,結(jié)合圖文形式詳細(xì)分析了在eclipse環(huán)境下開發(fā)Go語言所涉及的組件下載、安裝及相關(guān)設(shè)置方法,需要的朋友可以參考下
    2016-07-07
  • go語言程序cpu過高問題排查的方法詳解

    go語言程序cpu過高問題排查的方法詳解

    使用golang進(jìn)行復(fù)雜的組合運(yùn)算,導(dǎo)致CPU占用率非常高,下面這篇文章主要給大家介紹了關(guān)于go語言程序cpu過高問題排查的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Go?Ticker?周期性定時(shí)器用法及實(shí)現(xiàn)原理詳解

    Go?Ticker?周期性定時(shí)器用法及實(shí)現(xiàn)原理詳解

    這篇文章主要為大家介紹了Go?Ticker?周期性定時(shí)器用法及實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Go 語言中g(shù)in使用gzip壓縮遇到的問題

    Go 語言中g(shù)in使用gzip壓縮遇到的問題

    這篇文章主要介紹了Go 語言中g(shù)in使用gzip壓縮遇到的問題,需要的朋友可以參考下
    2017-09-09
  • Go使用pprof進(jìn)行CPU,內(nèi)存和阻塞情況分析

    Go使用pprof進(jìn)行CPU,內(nèi)存和阻塞情況分析

    Go 語言提供了強(qiáng)大的 pprof工具,用于分析 CPU、內(nèi)存、Goroutine 阻塞等性能問題,幫助開發(fā)者優(yōu)化程序,提高運(yùn)行效率,下面我們就來深入了解下pprof 的使用吧
    2025-03-03
  • Go并發(fā)讀寫文件、分片寫、分片下載文件的實(shí)現(xiàn)示例

    Go并發(fā)讀寫文件、分片寫、分片下載文件的實(shí)現(xiàn)示例

    讀寫文件在很多項(xiàng)目中都可以用到,本文主要介紹了Go并發(fā)讀寫文件、分片寫、分片下載文件的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • golang實(shí)現(xiàn)ip訪問限制及提交次數(shù)

    golang實(shí)現(xiàn)ip訪問限制及提交次數(shù)

    在?Web?應(yīng)用中,通常會(huì)需要對(duì)?IP?訪問進(jìn)行限制以及控制提交次數(shù),本文將使用中間件或者基于?Redis?這樣的緩存服務(wù)來實(shí)現(xiàn),感興趣的可以了解下
    2024-10-10
  • GoFrame?gredis配置文件及配置方法對(duì)比

    GoFrame?gredis配置文件及配置方法對(duì)比

    這篇文章主要為大家介紹了GoFrame?gredis配置管理中,配置文件及配置方法對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 在go語言中安裝與使用protobuf的方法詳解

    在go語言中安裝與使用protobuf的方法詳解

    protobuf以前只支持C++, Python和Java等語言, Go語言出來后, 作為親兒子, 那有不支持的道理呢? 這篇文章主要給大家介紹了關(guān)于在go語言中使用protobuf的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08

最新評(píng)論

安龙县| 岱山县| 白银市| 武义县| 武穴市| 尖扎县| 惠水县| 昆山市| 白水县| 石首市| 镇宁| 敦煌市| 马边| 二手房| 南江县| 西畴县| 九龙县| 庆阳市| 南岸区| 澳门| 水城县| 大英县| 出国| 额济纳旗| 嘉黎县| 洪江市| 延津县| 红河县| 古田县| 多伦县| 阿瓦提县| 阿拉善盟| 栾川县| 崇文区| 洪湖市| 鹤峰县| 长泰县| 安福县| 泉州市| 萨嘎县| 河源市|