草庐IT

Z-Buffer

全部标签

go - 将无限字节写入 bytes.Buffer

当我运行下面的代码时funcwriteBytes()([]byte,error){varbufbytes.BufferdstBytes:=bufio.NewWriter(&buf)writeTonsOfBytes(dstBytes)b:=buf.Bytes()fmt.Println(len(b))returnb,nil}我得到输出32768这向我发出信号,表明我的bytes.Buffer实例必须有限制,我找不到相关文档。如何将无限数量的字节写入bytes.Buffer? 最佳答案 没有调用dstBytes.Flush()在代码中。当

go - 不能在 func 参数中使用 bytes.Buffer 作为 io.WriterAt 类型

今天在go上苦苦挣扎..我不得不问的第二个问题。我有2个测试写入函数Write(),它采用writerio.WriterAt和contentinterface{}.我正在处理为函数编写的(2)个测试,TestWriteSuccessful和TestWriteFail。我在测试这两个函数时得到的错误是:cannotuse&b(type*bytes.Buffer)astypeio.WriterAtinargumenttoWrite:问题什么实现了我可以在这些测试中替换bytes.Buffer以使测试正常运行的WriterAt?我尝试过的将b的类型更改为os.File-b.len()>0将失

pointers - 为什么在将它传递给另一个函数时需要指向 Go bytes.Buffer 的指针?

在下面的代码中,write_commas要求缓冲区参数是一个指针。它有效。替代方案(即不使用指针)会导致空白输出。为什么传递实际的bytes.Buffer无法打印任何内容?或者换句话说,传递实际的bytes.Buffer是否会创建一个副本,从而将字节写入一个没有任何内容正在读取的缓冲区?packagemainimport("fmt""bytes")funcmain(){s:="1234567898"fmt.Println(Comma(s))}funcComma(sstring)string{varbufbytes.Buffer//0{whole_part:=sbytes[:decima

go - 如何将 []byte 转换为 *bytes.Buffer

我正在尝试解码通过另一个fasthttp端点发送的gob输出并收到错误Fasthttpendpoint(encode[]stringthroughgob)---->Fasthttpendpoint(接收和解码)buffer:=&bytes.Buffer{}buffer=ctx.PostBody()backToStringSlice:=[]string{}gob.NewDecoder(buffer).Decode(&backToStringSlice)我收到错误:ctx.PostBody()(type[]byte)astype*bytes.Bufferinassignment如何将[]b

go - 不能在 db.Query 的参数中使用缓冲区(类型 bytes.Buffer)作为类型字符串

我在buffer.WriteString()中编写了一个SQL查询,但无法在db.Query()中使用该缓冲区。buffer.WriteString(fmt.Sprintf(`SELECTc.id,c.company_name,ss.start_date,ss.shift_length,ss.bill_rate,ss.ot_hrs,ss.dt_hrs,ts.pay_rate,ts.wc_rate,ts.paid,td.wcFROMcompanycJOINusersu1ONc.id=u1.company_idJOINschedulesONu1.id=s.user_idJOINschedu

json - Protocol Buffer 格式的匿名结构

给定这样一个Go结构:typeHousestruct{AddressstringRooms[]struct{NamestringWindowsintDoorsint}}或等效的JSON表示:{"address":"""rooms":[{"name":"""windows":0"doors":0}]}等效的ProtocolBuffer表示是什么?这或多或少是我想做的(尽管不是有效的Proto语法):messageHouse{stringaddress=1;repeatedmessage{stringname=3;int32windows=4;int32doors=5;}rooms=2;}

go - 在 Go 中使用 bytes.Buffer 实现类斐波那契字符串连接的正确方法是什么?

我在Go中使用“+”和bytes.Buffer(“WriteString”和“Write(bytes)”)测试了简单的字符串连接。结果显示“+”比其他两个慢得多,这是有道理的。但是,当我使用这三种方式来实现类似斐波那契的字符串连接(即a、b、ab、bab、abbab、bababbab、abbabbababb)时,“+”表现最好。示例代码和基准测试结果如下所示。字符串“+”funcFibonacci(nint)string{FiboResult:=""prev_result:="a"next_result:="b"ifn==1{FiboResult="a"}elseifn==2{Fibo

go - 获取 golang 的 Protocol Buffer 选项信息

ProtocolBuffer定义如下,TestMessage有两个选项msg_option_a和msg_option_b:syntax="proto3";packagegrpctest;optiongo_package="pb";import"google/protobuf/descriptor.proto";extendgoogle.protobuf.MessageOptions{int32msg_option_a=50011;int32msg_option_b=50012;}messageTestMessage{option(msg_option_a)=22;option(msg_

memory-management - bytes.Buffer 是否执行大量重新分配?

我想做的是有一个io.MultiWriter写入标准输出和字节缓冲区。像这样:packagemainimport"bytes"import"fmt"import"io"import"os"funcmain(){varbbytes.Buffermulti:=io.MultiWriter(&b,os.Stdout)fmt.Fprintf(multi,"eachofthesestrings\n")fmt.Fprintf(multi,"mightbelarge\n")fmt.Fprintf(multi,"andtherearemanyofthem\n")fmt.Println(b.String

go - bytes.Buffer ReadFrom 与 r.Read 不同?

在连接错误的情况下,我想从ioReader获取数据流并在通过httppost将其作为流发送之前对其进行缓冲。为此,我计划使用bytes.Buffer并将其从读取器复制到缓冲区。一个单独的goroutine将从缓冲区读取并将读取器传递给http.Request。现在,bytes.BufferReadFrom的行为不是我所期望的。我正在用管道模拟数据流:r,w:=io.Pipe()gofunc(){fori:=0;i当从读取器读取byteslice时,每次写入后Read返回,但是,当使用ReadFrom时,它不会停止读取直到写入器关闭。这:buf:=&bytes.Buffer{}nIn,e