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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

記錄 printf 和寫入連接

記錄 printf 和寫入連接

Go
DIEA 2022-10-31 15:38:40
我不能從下面的golang代碼中獲得生命,為什么當(dāng)你在底部調(diào)用write函數(shù)時,func write(message string) {    log.Printf("%v\n", message)}為什么 log.Printf 調(diào)用下面的方法func (fl fileLog) Write(data []byte) (int, error ) {    fmt.Println("does this ever get called?")    f, err := os.OpenFile(string(fl), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)    if err != nil {        return 0, err    }    defer f.Close()    return f.Write(data)}Logger 的 printf 定義如下 func (*Logger) Printf ?func (l *Logger) Printf(format string, v ...interface{})-- 下面是完整代碼,請有人向我解釋一下為什么會這樣--package mainimport (    "fmt"    stlog "log"    "os")var log *stlog.Loggertype fileLog stringfunc (fl fileLog) Write(data []byte) (int, error ) {    fmt.Println("does this ever get called?")    f, err := os.OpenFile(string(fl), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)    if err != nil {        return 0, err    }    defer f.Close()    return f.Write(data)}func registerHandlers() {    var msgRaw = "how are you"    write(msgRaw)}func run(destination string) {    log =  stlog.New(fileLog(destination), "", stlog.LstdFlags)}func main() {    fmt.Println("here we go")    run("../test.log")    registerHandlers()}func write(message string) {    log.Printf("%v\n", message)}
查看完整描述

1 回答

?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個贊

記錄器將日志消息寫入一個io.Writer,這是一個定義為的接口:

type Writer interface {
   Write([]byte) (int,error)}

fileLog類型實(shí)現(xiàn)了io.Writer接口,您將其設(shè)置為新記錄器的輸出。因此,每當(dāng)記錄器嘗試寫入日志時,它都會調(diào)用其編寫器的Write函數(shù),即fileLog.Write.


查看完整回答
反對 回復(fù) 2022-10-31
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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