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

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

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

上一篇文章對(duì)http庫(kù)的基本使用做了說(shuō)明,下面來(lái)實(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, "這是主頁(yè)")  
}  
  
func user(w http.ResponseWriter, r *http.Request) {  
    fmt.Fprintf(w, "這是用戶(hù)頁(yè)面")  
}  
  
func main() {  
    http.HandleFunc("/", home)  
    http.HandleFunc("/user", user)  
    log.Fatal(http.ListenAndServe(":8080", nil))  
}

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

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

首先我們來(lái)寫(xiě)一個(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)聽(tīng)多個(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)求處理的過(guò)程中仍然存在問(wèn)題,就比如我們要實(shí)現(xiàn)一個(gè)用戶(hù)注冊(cè)的接口

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

到此這篇關(guān)于Go語(yǔ)言實(shí)現(xiàn)一個(gè)Http Server框架(二) Server的抽象的文章就介紹到這了,更多相關(guān)Go語(yǔ)言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ì)列,這篇文章主要就是來(lái)和大家深入探討一下GO語(yǔ)言中的優(yōu)先級(jí)隊(duì)列,感興趣的可以了解一下
    2023-06-06
  • Go語(yǔ)言eclipse環(huán)境搭建圖文教程

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

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

    go語(yǔ)言程序cpu過(guò)高問(wèn)題排查的方法詳解

    使用golang進(jìn)行復(fù)雜的組合運(yùn)算,導(dǎo)致CPU占用率非常高,下面這篇文章主要給大家介紹了關(guān)于go語(yǔ)言程序cpu過(guò)高問(wèn)題排查的相關(guān)資料,文中通過(guò)實(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 語(yǔ)言中g(shù)in使用gzip壓縮遇到的問(wèn)題

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

临汾市| 遵义县| 屯昌县| 通道| 仁化县| 商都县| 丹江口市| 顺义区| 启东市| 泰来县| 营口市| 新和县| 武城县| 准格尔旗| 通化市| 福建省| 平遥县| 乌苏市| 莎车县| 双江| 睢宁县| 新平| 莒南县| 林西县| 滨州市| 合阳县| 瑞昌市| 曲松县| 西乌珠穆沁旗| 宁阳县| 青田县| 民勤县| 潢川县| 马鞍山市| 兴安县| 盐山县| 普格县| 荃湾区| 绍兴县| 上虞市| 海南省|