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

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

為什么 io.WriterTo 的 WriteTo 方法返回 int64 而不是 int?

為什么 io.WriterTo 的 WriteTo 方法返回 int64 而不是 int?

Go
冉冉說 2021-09-27 21:13:54
Go 的io包中的大多數(shù)輸出方法都返回(int, error),例如io.Writer的Write([]byte)方法和io.WriteString(io.Writer, string)函數(shù)。但是,一些輸出方法,例如io.WriterTo的WriteTo方法,(int64, error)反而返回。這使得不方便實(shí)現(xiàn)WriteTo在以下方面Write或WriteString不存儲(chǔ)的中間值,并輸入從將其轉(zhuǎn)換int到int64。這種差異的原因是什么?
查看完整描述

2 回答

?
德瑪西亞99

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

有可能WriteTo復(fù)制超過 int32 字節(jié)的數(shù)據(jù)。

使用io.Readerio.Writer接口,數(shù)據(jù)量受到給定切片大小的限制,int對(duì)于當(dāng)前架構(gòu),切片的長(zhǎng)度限制為 。


查看完整回答
反對(duì) 回復(fù) 2021-09-27
?
婷婷同學(xué)_

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

Writer.Write()方法簽名:

Write(p []byte) (n int, err error)

它寫入slice的內(nèi)容。引用規(guī)范:切片類型

切片是底層數(shù)組的連續(xù)段的描述符......

眾所周知,切片有一個(gè)底層數(shù)組。再次引用規(guī)范:數(shù)組類型

長(zhǎng)度是數(shù)組類型的一部分;它必須計(jì)算為可由 type 值表示的非負(fù)常量int

因此數(shù)組的最大長(zhǎng)度受int類型最大值的限制(2147483647在 32 位和922337203685477580764 位架構(gòu)的情況下)。

所以回到Writer.Write()方法:由于它寫入傳遞的切片的內(nèi)容,因此可以保證寫入的字節(jié)數(shù)不會(huì)超過int.

現(xiàn)在WriteTo.WriteTo()方法:

WriteTo(w Writer) (n int64, err error)

沒有提到切片或數(shù)組。您無法保證結(jié)果將適合int,因此int64不僅僅是合理的。

例子: BigBuffer

想象一個(gè)BigBuffer臨時(shí)將數(shù)據(jù)寫入數(shù)組或切片的實(shí)現(xiàn)。該實(shí)現(xiàn)可以管理多個(gè)數(shù)組,以便如果一個(gè)數(shù)組已滿(例如達(dá)到最大整數(shù)),則繼續(xù)另一個(gè)數(shù)組?,F(xiàn)在,如果 thisBigBuffer實(shí)現(xiàn)了WriteTo接口并且您調(diào)用此方法將內(nèi)容寫入 an os.File,則結(jié)果將大于 max int。


查看完整回答
反對(duì) 回復(fù) 2021-09-27
  • 2 回答
  • 0 關(guān)注
  • 280 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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