草庐IT

summary_writer

全部标签

go - 在 Go 中实现 io.Writer 接口(interface)

我正在尝试通过“Write”方法创建一个满足io.Writer接口(interface)的结构类型:packagemainimport("fmt")typePersonstruct{name[]byte}func(pPerson)Write(data[]byte)(nint,errerror){p.name=datareturnlen(data),nil}funcmain(){b:=[]byte("Dave")person:=Person{}fmt.Fprint(person,b)fmt.Printf("Personname:%s\n",person.name)}但是指令fmt.Fpr

go - 在 Golang 中读取/复制从 `io.Reader` 到 `io.Writer` 的特定数量的字节,或者如果超过特定字节限制则返回错误?

我有一个io.Reader在Golang中,我想在运行io.Copy()之前或运行时仔细检查其数据大小是否低于预定的最大值使用io.Writer将其保存到磁盘.由于文件数据在io.Reader理论上可能会很大,如果可以避免的话,我想尽量减少这里的内存使用和处理。我认为没有类似io.CopyLessThanOrEqualToThisManyBytesOrReturnError()的功能,但我确实注意到io.ReadFull()如果没有足够的字节来填充提供的缓冲区,可以执行相反的操作以返回错误。有没有人能解决这个问题?编辑:澄清一下,复制一小部分数据是不行的。它要么在超过阈值时失败,要么在

golang 代理 io.Writer 在 log.Logger 中使用时表现不同

我正在尝试实现一个满足io.Writer要求的代理,这样我就可以将它插入一个记录器中。这个想法是它会像平常一样打印输出,但也会保留一份数据副本供以后读取。下面代码中的ProxyIO结构应该可以做到这一点,而且只要我直接调用它的Write()方法,它确实可以做到。但是,当我将它插入log.Logger实例时,输出是意外的。(这是精简代码,我想使用的原始实现是使用映射和循环指针,而不是示例代码中使用的[][]bytebuf。我还删除了所有的锁定。)packagemainimport("fmt""io""io/ioutil""log")typeProxyIOstruct{outio.Writ

go - 使用接受 io.Writer 作为 HandleFunc 的函数

我想创建一个函数,它可以是http的HandleFunc,但也可以被其他作者调用。由于http.ResponseWriter实现了io.Writer并且我的函数不需要设置HTTPheader,我认为这可能是可能的:funcdoit(wio.Writer,r*http.Request){w.Write([]byte("Hello"))}http.HandleFunc("/",doit)但是没有:cannotusedoit(typefunc(io.Writer,*http.Request))astypefunc(http.ResponseWriter,*http.Request)inarg

json - 我可以从 http.ResponseWriter 获得 io.Writer 吗?

我想使用json.Encoder写入http.ResponseWriter。我想知道,我从哪里得到http.ResponseWriter自己的io.Writer?(io.Writer需要作为json.NewEncoder的参数)有什么想法吗? 最佳答案 http.ResponseWriter实现Write([]byte)(int,error)。因此你可以在任何地方使用它io.Writer是必需的。funchandler(whttp.ResponseWriter,r*http.Request){encoder:=json.NewEnc

go - 将额外数据写入 io.Writer

我想弄清楚如何更改jpeg.EncodeAPI(http://golang.org/pkg/image/jpeg/#Encode)的行为,该API采用io.Writer作为参数并写入提交给它。我需要在写入文件的前两个字节之后插入一组字节,我认为可以不将所有内容都保存在内存中。我是Golang的新手,我发现io.Pipe连接了读者和作者,但我不知道如何使用它来满足我的需要。有人可以帮忙吗?编辑:我应该只实现我自己的io.Writer接口(interface)吗? 最佳答案 如果您预先知道需要添加到流中的字节(无论流、图像与否),那么为

go - 如何获得实现 io.WriteCloser 的 bufio.Writer

我想扩展以无缓冲方式将数据写入文件的现有代码。代码需要一个实现io.WriteCloser接口(interface)的编写器。因此,仅仅用bufio.Writer包装现有文件是行不通的,因为它没有实现这个接口(interface)。我如何创建一个bufio.Writer来实现和传递对底层文件的必要关闭调用? 最佳答案 io.WriteCloser是界面:typeWriteCloserinterface{WriterCloser}最终“规定”了这两种方法:Write(p[]byte)(nint,errerror)Close()erro

go - 获取 syslog.Writer undefined

我已经创建了如下自定义类型。import("encoding/json""log""log/syslog""strconv""time")typeMyLoggerstruct{w*syslog.WriterLogNamestring}我收到错误syslog.writerundefined。甚至我在golangplayground中也尝试过同样的操作,但它给出了同样的错误。https://play.golang.org/p/2unuwHBoBE 最佳答案 根据https://blog.golang.org/playground,Toi

go - 了解 gometalinter 的警告 : conn can be io. Reader/io.Writer

用gometalinter检查后这部分代码://ListenerButtonishanginglistenersforcontactbuttonfuncListenerButton(numberint,button*ui.Button,connnet.Conn)string{button.OnClicked(func(*ui.Button){sliceMembers:=[]string{login,button.Text()}groupName=login+button.Text()_,err:=conn.Write([]byte(JSONencode(login,"","",0,gr

go - 如何连接 io.Reader 和 io.Writer?

我正在编写一个长时间运行的任务,它多次从mongodb(使用mgo)获取。然后使用thismodule将其写入xlsx文件.然后使用os.Open再次读取它,然后将其存储到我的ftp服务器。Stor函数非常消耗我的内存,所以我认为应该有一种方法不保存文件而是将我的数据从xlsx.Write直接传递到ftp.Store。(如果我可以同时流式传输就完美了,因为我不必在将所有文档发送到Stor函数之前将它们保存在服务器的内存中)这些是函数的原型(prototype)func(f*File)Write(writerio.Writer)(err错误)xlslfunc(ftp*FTP)Stor(p