草庐IT

install-write

全部标签

http - 在 Go http 处理程序中处理 Write 调用错误的最佳方法

处理http处理程序中的Write错误的最佳方法是什么。funchello(whttp.ResponseWriter,r*http.Request){n,err:=w.Write([]byte("hi"))//howshouldwehandlethiserror?}我想我可以取n并尝试用剩余字节再次写入。 最佳答案 此时您只会看到两种类型的错误:网络错误,(例如如果客户端在您尝试发送数据时消失),或由服务器错误引起的错误(例如如果您手动设置Content-Length然后尝试写入比您声明的更多的数据,您将得到ErrContentLe

file-io - Golang语法错误: unexpected EOF while writing to a file

在括号的最后一行代码中出现syntaxerror:unexpectedEOF。它与文件IO有关,因为JSON代码在我将其添加到b,err:=json.Marshal(gfjson)iferr!=nil{panic(err)filename:=".gfjson"f,err:=os.Create(filename)iferr!=nil{panic(err)}//closefileonexitandcheckforreturnederrordeferfunc(){iferr:=f.Close();err!=nil{panic(err)}}()if_,err:=f.Write(b);err!=

go install 不创建包的二进制文件,而 go get 能够

我在go1.11.2linux/amd64版本。当包godog使用gogetgithub.com/DATA-DOG/godog/安装,godog可执行文件在$GOPATH/bin/中创建。到目前为止一切正常。我正在创建一个位于$GOPATH/src/的应用程序myApp,在文件夹vendor下添加了godog包。当我尝试从vendor-ed包中创建二进制文件时,在$GOPATH/pkg/linux_amd64/myApp/vendor/github.com/DATA-DOG/中创建了一个存档文件作为godog.a在这种情况下如何创建二进制文件?我不想再次为二进制文件执行goget。

Go包安装问题: No install location

我正在尝试构建packer来自ubuntu的源代码,但出现以下错误,我不确定如何解决。goinstall:noinstalllocationfor_/home/vagrant/packer/builder/amazon/chrootgoinstall:noinstalllocationfor_/home/vagrant/packer/builder/amazon/commongoinstall:noinstalllocationfor_/home/vagrant/packer/builder/amazon/ebsgoinstall:noinstalllocationfor_/home/

去安装: no install location for directory

我想我知道发生了什么。当我安装gvm时GOPATH改变了:>alex@alex-K43U:~/go/src/m2k$goinstallgoinstall:noinstall>locationfordirectory/home/alex/go/src/m2koutsideGOPATH>>alex@alex-K43U:~/go/src/m2k$goenv>GOPATH="/home/alex/.gvm/pkgsets/go1.4/global">GOROOT="/home/alex/.gvm/gos/go1.4"我应该知道什么?我担心将GOPATH带到我的工作场所会弄乱gvm。另一方面,g

installation - 在 Go 中安装 exp/html

看起来Go还不支持HTML网络解析工具/包,尽管它已经通过encoding/xml提供了XML抓取。那么如何在Go中安装exp/html包呢?据我所知,所有的答案,至少我在网上搜索了10分钟后偶然发现的,都没有返回正确答案;当我尝试运行它们时,出现错误cannotfindpackageXXXinYYY或noGosourcefilesinXXX。那么到目前为止,我可以安装它而无需从头开始重新编译和设置整个Go环境吗?还是我遗漏了什么?我在OSX10.8上运行Go1.1版,它是我从OSX软件包安装程序安装的。请注意,这些代码没有成功。gogetcode.google.com/p/go/sr

GoLang, "hash.Write", "write()"函数是从哪里来的?

funchash(sstring)uint32{h:=fnv.New32a()h.Write([]byte(s))returnh.Sum32()}对于这段代码。我明白h是什么类型。它是哈希。但是对于Hash类型,我没有看到任何Write()方法。http://golang.org/pkg/hash/这是什么Write()?谢谢 最佳答案 Hash接口(interface)嵌入Writer界面。因此,任何类型想要实现Hash接口(interface),也需要实现包含Write方法的Writer接口(interface)。使用Write

networking - Write In Golang是否需要检查返回的 "n"

我有一个服务器并启动了一个goroutine来发送数据。像这样的代码funchandleSend(conn*net.TcpConn,ch今天,我想我应该检查conn.Write返回的n以确保msg被完整写入。所以我在这里的地方添加了下面的代码for;n!=len(msg);{log.Error("connwritenotcompletely",len(msg),"actually",n)msg=msg[n:]n,err=sess.conn.Write(msg)iferr!=nil{log.Error("connwriteerror",err)return}}我想知道这样做是否正确?PS

tcp - 在 golang 中,TCPConn.Write/Read 会返回什么错误?

在golang中,你会如何处理TCPConn.Read/Write返回的错误?这个document没有说任何关于读/写错误的信息。 最佳答案 TCPConn上的Read和Write可能会返回您的操作系统、硬件和驱动程序的组合可能会返回的大部分错误,以及一些net包错误,以及io.EOF适用时。因此,真正由您决定要查找哪些错误以及如何处理它们。网络API的每一层,甚至是berkeleysocketapi,都是一个有漏洞的抽象,如果不了解实际的套接字和网络协议(protocol)是如何工作的,就无法充分利用它。通常你只需要关心io.EO

hash - 调用 Write(val) 然后调用 Sum(nil) 与哈希中的 Sum(val) 之间的区别?

我正在研究使用Go的crypto包,并且我有一个我正在尝试弄清楚的简单示例。我知道我可以将io.WriteString与散列一起使用,但我想在将它与另一个库连接之前直接了解散列对象。packagemainimport("crypto/md5""fmt")funcmain(){val:=[]byte("HelloWorld")h:=md5.New()h.Write(val)fmt.Printf("%x\n",h.Sum(nil))fmt.Println()h2:=md5.New()fmt.Printf("%x\n",h2.Sum(val))}Runningit产生这个输出:b10a8db