草庐IT

WSA_IO_PENDING

全部标签

io - Golang 中的 Reader 接口(interface)和 Read 方法

我正在关注golang之旅,我被要求:Implementarot13Readerthatimplementsio.Readerandreadsfromanio.Reader,modifyingthestreambyapplyingtheROT13substitutionciphertoallalphabeticalcharacters.我首先实现了*rot13Reader的方法typerot13Readerstruct{rio.Reader}func(r*rot13Reader)Read(p[]byte)(nint,eerror){}但是我无法理解这种Read方法。p是否包含读取的所有

unit-testing - 在 Go 中使用覆盖信息测试 os.Exit 场景 (coveralls.io/Goveralls)

这个问题:Howtotestos.exitscenariosinGo(以及其中投票最高的答案)阐述了如何在go中测试os.Exit()场景。由于os.Exit()不容易被拦截,所以使用的方法是重新调用二进制文件并检查退出值。此方法在slide23onthispresentation中进行了描述。作者:AndrewGerrand(围棋团队的核心成员之一);代码很简单,全文转载如下。相关的测试和主文件看起来像这样(注意这对文件单独是一个MVCE):packagefooimport("os""os/exec""testing")funcTestCrasher(t*testing.T){ifo

json - 将 io.ReadCloser 转换为字节数组的最有效方法

我有一个非常简单的Go网络服务器。它的工作是接收入站json有效负载。然后它将有效负载发布到一个或多个需要字节数组的服务。无需检查有效负载。刚发过来。在这种情况下,它会接收入站作业并将其发送到GooglePubSub。它可能是另一项服务-这并不重要。我正在尝试找到最有效的方法来将对象转换为字节数组,而无需先对其进行解码。为什么?在一台服务器上解码和转换为JSON似乎有点浪费,只是稍后解码它。另外,我不想在两个包中维护两个相同的结构。如何将io.ReadCloser转换为字节数组,所以我只需要解码一次。我试过这样的答案,但也不认为这是最有效的方法:Fromio.Readertostrin

Golang io/ioutil NopCloser

有没有人对Golang的NopCloser有好的或任何解释?功能?我环顾四周,但除了Golang的主要文档对以下内容的解释外,没有找到任何东西:NopCloserreturnsaReadCloserwithano-opClosemethodwrappingtheprovidedReaderr.任何指针或解释将不胜感激。谢谢。 最佳答案 当您需要返回io.ReadCloser时,在确保Close()可用的同时,您可以使用NopCloser来构建这样的ReaderCloser。您可以在forkofgorest中看到一个示例,在util.

file-io - 在 golang 中,如何将 exec.Cmd 的标准输出写入文件?

我正在尝试运行shell命令,捕获标准输出并将该输出写入文件。但是,我似乎缺少一些步骤,因为当程序存在时,我尝试写入的文件是空的。如何捕获命令的标准输出并将其写入文件?packagemainimport("bufio""io""os""os/exec")funcmain(){cmd:=exec.Command("echo","'WHATTHEHECKISUP'")//opentheoutfileforwritingoutfile,err:=os.Create("./out.txt")iferr!=nil{panic(err)}deferoutfile.Close()stdoutPipe

file-io - 如何使用 "compress/gzip"包来 gzip 文件?

我是Go新手,不知道如何使用compress/gzip包来发挥我的优势。基本上,我只是想写一些东西到一个文件中,gzip它并通过另一个脚本直接从压缩格式中读取它。如果有人能给我一个如何做到这一点的例子,我将不胜感激。 最佳答案 所有压缩包都实现相同的接口(interface)。你会使用这样的东西来压缩:varbbytes.Bufferw:=gzip.NewWriter(&b)w.Write([]byte("hello,world\n"))w.Close()然后解压:r,err:=gzip.NewReader(&b)io.Copy(o

go - 从本地文件创建 io.Reader

我想打开一个本地文件,并返回一个io.Reader。原因是我需要将io.Reader提供给我正在使用的库,例如:funcread(rio.Reader)(results[]string){} 最佳答案 os.Open返回一个io.Readerhttp://play.golang.org/p/BskGT09kxLpackagemainimport("fmt""io""os")var_io.Reader=(*os.File)(nil)funcmain(){fmt.Println("Hello,playground")}

file-io - 在 Go 中附加到文件

所以我可以像这样从本地文件中读取:data,error:=ioutil.ReadFile(name)我可以写入本地文件ioutil.WriteFile(filename,content,permission)但是我怎样才能追加到文件中呢?有内置方法吗? 最佳答案 此答案适用于Go1:f,err:=os.OpenFile(filename,os.O_APPEND|os.O_WRONLY|os.O_CREATE,0600)iferr!=nil{panic(err)}deferf.Close()if_,err=f.WriteString(

go - 从 io.Reader 到 Go 中的字符串

我有一个io.ReadCloser对象(来自http.Response对象)。将整个流转换为string对象的最有效方法是什么? 最佳答案 编辑:从1.10开始,strings.Builder就存在了。示例:buf:=new(strings.Builder)n,err:=io.Copy(buf,r)//checkerrorsfmt.Println(buf.String())以下信息过时简短的回答是它效率不高,因为转换为字符串需要完整复制字节数组。这是做你想做的事情的正确(非高效)方法:buf:=new(bytes.Buffer)bu

go - 将字节 slice 转换为 io.Reader

在我的项目中,我有一个来自请求响应的字节slice。deferresp.Body.Close()ifresp.StatusCode!=http.StatusOK{log.Println("StatusCode为"+strconv.Itoa(resp.StatusCode))return}respByte,err:=ioutil.ReadAll(resp.Body)iferr!=nil{log.Println("failtoreadresponsedata")return}这可行,但如果我想获取io.Reader的响应正文,我该如何转换?我尝试了newreader/writer但没有成功