第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

服務(wù)器啟動(dòng)時(shí)的日志

服務(wù)器啟動(dòng)時(shí)的日志

Go
慕慕森 2021-11-29 16:29:18
http服務(wù)器啟動(dòng)時(shí)有沒(méi)有辦法打印一些東西?例如"Server is started at port 8080"在 Node(使用 Express)中,它會(huì)是這樣的:app.listen(8080, function() { console.log('Server started at port 8080') });這是我的代碼:func main() {    http.HandleFunc("/", MyHandler)    http.ListenAndServe(":8080", nil)}謝謝。
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

使用 Go 的日志包:


package main


import (

    "net/http"

    "log"

)


func main() {

    addr := ":8080"

    http.HandleFunc("/", MyHandler)

    log.Println("listen on", addr)

    log.Fatal( http.ListenAndServe(addr, nil) )

}

http.ListenAndServe打開(kāi)服務(wù)器端口,并永遠(yuǎn)阻塞等待客戶(hù)端。如果打開(kāi)端口失敗,log.Fatal調(diào)用將報(bào)告問(wèn)題并退出程序。


查看完整回答
反對(duì) 回復(fù) 2021-11-29
?
達(dá)令說(shuō)

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

您無(wú)法打印日志消息,ListenAndServe因?yàn)樗鼤?huì)阻塞并且永遠(yuǎn)不會(huì)返回,因此基本上您有兩個(gè)主要選擇:

  1. 打印“在端口上啟動(dòng)服務(wù)器......”就這樣 - 但是如果ListenAndServe無(wú)法啟動(dòng)它會(huì)返回一個(gè)錯(cuò)誤,所以除非因此打印了一些錯(cuò)誤或恐慌,否則您可以假設(shè)服務(wù)器已啟動(dòng)。

  2. 調(diào)用ListenAndServe一個(gè)單獨(dú)的 goroutine,并確保沒(méi)有返回錯(cuò)誤并打印“服務(wù)器啟動(dòng)...”等。

我個(gè)人更喜歡第一種方法。


查看完整回答
反對(duì) 回復(fù) 2021-11-29
?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

要ListenAndServe在 Not_a_Golfer 提到的 goroutine 中運(yùn)行,您可以使用無(wú)緩沖的阻塞通道在 goroutine 中運(yùn)行它并保持服務(wù)器處于活動(dòng)狀態(tài)。


下面的示例創(chuàng)建一個(gè)名為donewhere的通道,<-done它將在服務(wù)器等待 goroutine 完成時(shí)保持活動(dòng)狀態(tài),在這種情況下它不會(huì)。通常,goroutine 會(huì)通過(guò)執(zhí)行來(lái)告訴主函數(shù)它已完成done <- true。


package main


import (

    "log"

    "net/http"

)


func MyHandler(w http.ResponseWriter, r *http.Request) {

    w.Write([]byte("Hello World"))

}


func main() {

    port := "8080"


    http.HandleFunc("/", MyHandler)


    done := make(chan bool)

    go http.ListenAndServe(":"+port, nil)

    log.Printf("Server started at port %v", port)

    <-done

}

這是一個(gè)更大的示例,它讓服務(wù)器驗(yàn)證它是否可以運(yùn)行、使用Listen和Serve單獨(dú)進(jìn)行。這樣做的好處是您可以輕松捕獲不正確的端口。


package main


import (

    "log"

    "net"

    "net/http"

    "os"

)


func MyHandler(w http.ResponseWriter, r *http.Request) {

    w.Write([]byte("Hello World"))

}


func main() {

    port := "8080"


    http.HandleFunc("/", MyHandler)


    listener, err := net.Listen("tcp", ":"+port)

    if err != nil {

        log.Fatal(err)

    }


    done := make(chan bool)

    go http.Serve(listener, nil)


    // Log server started

    log.Printf("Server started at port %v", port)


    // Attempt to connect

    log.Printf("Fetching...")

    res, err := http.Get("http://" + listener.Addr().String())

    log.Printf("Received: %v, %v", res, err)

    if err != nil {

        log.Fatal(err)

    }

    res.Write(os.Stdout)


    <-done

}


查看完整回答
反對(duì) 回復(fù) 2021-11-29
  • 3 回答
  • 0 關(guān)注
  • 249 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)