草庐IT

stdin_reader

全部标签

go - 通过 gzip 将命令输出通过管道传输到 Reader

我正在尝试执行shell命令并压缩它的输出。问题是我随后需要与需要Reader的API进行交互。为此,我尝试了以下(简化代码):packagemainimport("encoding/hex""testing""fmt""io""io/ioutil""os/exec""compress/gzip")funcTestPipe(t*testing.T){cmd:=exec.Command("echo","hello_from_echo")reader,writer:=io.Pipe()gzW:=gzip.NewWriter(writer)cmd.Stdout=gzWcmd.Start()g

go - 从 io.Reader 创建一个 io.ReaderAt

是否有io.ReaderAt的实现可以从io.Reader的实现创建而无需先读入[]byte或string? 最佳答案 类似下面的内容。注意bytes.Reader实现了ReadAt(...)方法/函数:https://golang.org/pkg/bytes/#Reader.ReadAt.所以bytes.NewReader行本质上就是您要查找的内容。获取bytes.Reader:varioReaderio.Reader...buff:=bytes.NewBuffer([]byte{})size,err:=io.Copy(buff,

go - 通过 http POST 发送 os.Stdin 而无需将文件加载到内存中

我正在尝试通过POST请求将文件发送到服务器。为此,我使用以下代码:funcnewfileUploadRequest(uristring)(*http.Request,error){body:=new(bytes.Buffer)writer:=multipart.NewWriter(body)part,err:=writer.CreateFormFile("file","file")iferr!=nil{returnnil,err}io.Copy(part,os.Stdin)err=writer.Close()iferr!=nil{returnnil,err}request,err:=

go - 如何在提示文本 "Enter input"之前检查 os.stdin 是否可用

我必须提示来自os.stdin的一些输入。在打印诸如“输入您的文本”之类的语句然后从输入读取之前,我如何检查它是否可用于读取。如果stdin不可用,则打印错误的文件描述符在“输入您的文本”之后。如何避免这种情况?packagemainimport("bufio""os""io""fmt")funcmain(){consSource:=NewConsoleAccessTokenSource("www.google.co.in",os.Stdin)fmt.Print("Token:")consSource.scanner.Scan()err:=consSource.scanner.Err(

go - rand.Reader读取时可能会报错?

我是否正确理解crypto/rand.Reader可以在下面未列出的平台上返回读取错误仅,即当它没有实际实现时?//Readerisaglobal,sharedinstanceofacryptographically//strongpseudo-randomgenerator.////OnLinux,Readerusesgetrandom(2)ifavailable,/dev/urandomotherwise.//OnOpenBSD,Readerusesgetentropy(2).//OnotherUnix-likesystems,Readerreadsfrom/dev/urandom

html - 去 Reader.read();如何在不重复的情况下获取内容?

我最近开始研究Go作为一个业余项目,并一直在努力更好地处理Reader界面。具体来说,我正在尝试从网站获取内容,然后将其读取为字节slice。我知道ioutils.ReadAll函数是获取数据的规范方式,但我很好奇为什么我编写的原始函数在输出末尾有重复的内容。代码:包主import("net/http""fmt")funcmain(){//retrieveurlfromhackernews.resp,err:=http.Get("http://news.ycombinator.com/")iferr!=nil{//handleerror}deferresp.Body.Close()te

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

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

go - Go rot13Reader 缓冲区在读取功能完成后未更新

这是我使用strings.Map实现的练习(rot13函数直接来自golang的文档)。问题是在Read函数返回后,缓冲区似乎没有被修改。这是代码:packagemainimport("io""os""strings""fmt")typerot13Readerstruct{rio.Reader}func(reader*rot13Reader)Read(b[]byte)(int,error){rot13:=func(rrune)rune{switch{caser>='A'&&r='a'&&r和输出:Youcrackedthecode!Lbhpenpxrqgurpbqr!Youcracke

sockets - golang 将套接字附加到 Stdin/Stdout

将套接字附加到标准输入/标准输出的最佳方法是什么。我知道我们可以将stdin/Stdout重定向到任何文件描述符,但是我们如何对套接字做同样的事情。(比如socat的工作原理)? 最佳答案 好吧,Go中的套接字类型实现了io.Writer接口(interface),而os.Stdin实现了io.Reader,所以我的第一个猜测是尝试bufio.Writer。它可能看起来像:packagemainimport("bufio""os")funcmain(){socket:=getSocket()//leftasanexercisefor

go - reader.ReadLine() 在 scanner.Scan() 调用后不前进

下面的代码从这个文件中读取它的值:23\n1.02.03.0\n-1.0-2.0-3.0\n并且应该打印:[{123},{-1-2-3}]但我得到的是:[{2[3123]}{0[]}]strconv.ParseFloat:解析“3.0-1.0”:语法无效reader.ReadLine()似乎停留在同一位置。有没有更简单的方法来扫描行,然后扫描每行内的值?packagemainimport("bufio""bytes""fmt""os""strconv""strings")typeExamplestruct{classLabelintattributes[]float64}funcNew