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

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

為什么 conn.Read() 不向 []byte 寫入任何內(nèi)容

為什么 conn.Read() 不向 []byte 寫入任何內(nèi)容

Go
阿波羅的戰(zhàn)車 2021-12-07 10:02:51
它輸出方括號的原因是因為您將切片傳遞到打印命令中。您要做的是將每個命令放入一個字符串中,以便根據(jù)需要進(jìn)行打印。firstname := os.Args[1]lastname := os.Args[2]fmt.Println(lastname + ", " + firstname)您還應(yīng)該查看Chandru 指出的字符串包。那里有很多好東西可以幫助處理字符串。見:https : //golang.org/pkg/strings我有一個連接,創(chuàng)建如下:conn, err = net.Dial("tcp", "127.0.0.1:20000")我嘗試通過兩種方式從這個連接中讀取。我認(rèn)為他們都必須工作,但第一個選項沒有。這是第一種方法:var bytes []bytefor i := 0; i < 4; i++ {    conn.Read(bytes)}fmt.Printf("%v", bytes)該方法的輸出是:[]這是同樣的事情,完成了bufio.Reader:func readResponse(conn net.Conn) (response string, err error) {    reader := bufio.NewReader(conn)    _, err = reader.Discard(8)    if err != nil {        return    }    response, err = reader.ReadString('\n')    return}該函數(shù)返回 TCP 連接另一端的服務(wù)器給出的響應(yīng)。為什么bufio.Reader.Read()有效,但net.Conn.Read()沒有?
查看完整描述

1 回答

?
慕無忌1623718

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

該Conn.Read()方法是為了實現(xiàn)io.Reader,從任何字節(jié)源讀取數(shù)據(jù)的通用接口[]byte。引用自 的文檔Reader.Read():


Read 將最多 len(p) 個字節(jié)讀入 p。


因此Read()最多讀取len(p)字節(jié),但由于您傳遞了一個nil切片,它不會讀取任何內(nèi)容(nil切片的長度為0)。請閱讀鏈接的文檔以了解Reader.Read()工作原理。


Reader.Read()沒有分配一個緩沖區(qū) ( []byte) 來存儲讀取的數(shù)據(jù),你必須創(chuàng)建一個并傳遞它,例如:


var buf = make([]byte, 100)

n, err := conn.Read(buf)

// n is the number of read bytes; don't forget to check err!

不要忘記始終檢查返回的數(shù)據(jù),如果到達(dá)數(shù)據(jù)末尾error可能會返回io.EOF。的常規(guī)協(xié)定io.Reader.Read()還允許返回一些非nil錯誤(包括io.EOF)和一些讀出的數(shù)據(jù)(n > 0)在同一時間。讀取的字節(jié)數(shù)將在n,這意味著只有 的第一個n字節(jié)buf是有用的(換句話說:)buf[:n]。


您使用的其他示例bufio.Reader有效,因為您調(diào)用了Reader.ReadString()which 不需要[]byte參數(shù)。如果您使用了該bufio.Reader.Read()方法,您還必須傳遞一個非nil切片才能實際獲取一些數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2021-12-07
  • 1 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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