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

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

讀取接口參數(shù)(p []字節(jié))讀取后將字節(jié)長度變?yōu)?512

讀取接口參數(shù)(p []字節(jié))讀取后將字節(jié)長度變?yōu)?512

Go
翻閱古今 2022-08-24 11:26:28
下面是示例代碼:人員的定義type Person struct {   Data string   done bool}實現(xiàn)寫入func (person *Person) Write(p []byte) (int,error) {    person.Data = string(p)    return len(p), nil}實現(xiàn)讀取func (person *Person) Read(p []byte) (int,error) {    if person.done {        return 0, io.EOF    }    for index, b := range []byte(person.Data) {        p[index] = b    }    // len(p) = 512 <- length p []byte    person.done = true    return len(person.Data), nil}寫入一些數(shù)據(jù)func writeTo(out io.Writer) error {    if _, err := out.Write([]byte("test")); err != nil {        return err    }    fmt.Println("Write done")    return nil}主要func main() {    p := &Person{}        writeTo(p)    s, err := ioutil.ReadAll(p)    if err != nil {        panic(err)    }        fmt.Println("result:",string(s),len(s))}如所注意到的,p []字節(jié)長度為512。我想知道為什么它變成512長度。
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經(jīng)驗 獲得超12個贊

您的代碼調(diào)用 :ReadAll


s, err := ioutil.ReadAll(p)

ReadAll基本上像這樣工作:


package main

import "fmt"


func main() {

   // first, make an empty slice, with a reserve space of 512

   b := make([]byte, 0, 512)

   // then, write data into the reserve space

   n := copy(b[:cap(b)], "north")

   // then, increase the slice to how much data was just written

   b = b[:n]

   // 5 [110 111 114 116 104]

   fmt.Println(n, b)

}

https://github.com/golang/go/blob/go1.16.3/src/io/io.go#L626


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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