草庐IT

go-mocket

全部标签

go - 拦截 Go 中的错误和 panic

我正在创建一个CLI,只是为了更多地了解Go。是否有可能拦截所有错误和panic,这样我就可以有一个独特的地方来处理它们,并对其进行格式化,然后打印到标准输出。例子:而不是使用:x,err:=doSomething()iferr!=nil{errorHandler.Handler(err)}我可以在做任何事情之前使用初始化可以拦截所有错误的代码:errorHandler.New()然后我可以“忽略”所有错误:x,_:=doSomething()这对Go来说是一种不好的做法吗? 最佳答案 错误只是go中的值。就像函数返回字符串时无法拦

go - 为什么在method中只用一个字符来表示receiver?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion为什么在struct的方法中只用一个字符来表示当前实例?示例:typeSomethingstruct{}func(s*Something)doSomething(){}我发现使用起来更具可读性:func(something*Something)doSomething(){}

go - 对如何从源代码构建一个 go 项目感到困惑

我正在尝试构建以太坊节点Geth:https://github.com/ethereum/go-ethereum我将项目克隆到我的src文件夹中(在一个名为geth的文件夹中,不应该是metter,对吧?),当我尝试运行/编译时找不到:"github.com/ethereum/go-ethereum/accounts""github.com/ethereum/go-ethereum/accounts/keystore""github.com/ethereum/go-ethereum/cmd/utils"目前这些文件存在,作为我正在尝试编译的项目的一部分,所以我实际上不明白为什么要在线引

go - 将固定长度的填充行写入文件 Go

对于打印,合理和固定长度,似乎每个人都在问,我找到了很多例子,比如......packagemainimport"fmt"funcmain(){values:=[]string{"Mustang","10","car"}fori:=range(values){fmt.Printf("%10v...\n",values[i])}fori:=range(values){fmt.Printf("|%-10v|\n",values[i])}}情况但是如果我需要写入一个具有固定长度字节的文件怎么办?例如:如果我有这样的要求怎么办,将此行写入一个必须为32字节的文件,左对齐并用0向右填充问题那么,

function - 在go函数中将函数作为参数传递

我想在go函数中将函数作为参数传递。这是我的代码:funcCall(pathstring,methodfunc()){//TODOlaunchthemethodhere}当我想调用这个函数时,我想这样做:funcroutes(){app.Call("/",controllers.Index())}Index()方法是:funcIndex(reshttp.ResponseWriter,reqhttp.Request){userAgent:=req.Header.Get("User-Agent")fmt.Fprintf(res,"You'reUser-Agentis%s",userAgen

for-loop - 从 go 中的 tcp 连接读取数据是否需要 for 循环?

有一个func来处理tcp连接:for{select{caseconn:=我的问题是,如果你使用for循环,你必须写return否则它会是一个死循环。如果它返回,这个handleClient函数将只执行一次。所以这里不需要for,对吧?我们仍然可以在没有for的情况下读取所有数据,这是正确的思考方式吗? 最佳答案 服务器处理连接的常见模式可能是funchandleClient(connnet.Conn){r:=bufio.NewReader(conn)for{line,err:=r.ReadBytes(byte('\n'))swit

go - 如何解决golang中 "missing Location in call to Date"的错误

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭4年前。Improvethisquestion我写了一个golang程序来生成不同地点的开始日期和结束日期ifmonth!=""&&year!=""{varmonthInt,_=strconv.Atoi(month)varyearInt,_=strconv.Atoi(year)timeZone,err:=time.LoadLocation("A

go - 如何将函数内部创建的变量作为指向另一个函数的指针传递

嗨,这里是Golang新手,如何将变量作为指针参数传递给另一个函数。funcB(temp*?,event*Event){temp["filla_a"]=event.Data["filla_a"]returntemp}funcA(event*Event){temp:=make(map[string]interface{})temp["po_id"]=event.Data["id"]temp=B(temp,event)}如何在golang中实现这一点? 最佳答案 在go中可以这样做:packagemainimport("fmt")typ

go - 为什么 goroutines 不处理同一个文件两次?

我正在查看有关goroutines和channel等模式的goroutines博客文章。在bounded.go例如我看到这个:paths,errc:=walkFiles(done,root)//Startafixednumberofgoroutinestoreadanddigestfiles.c:=make(chanresult)//HLcvarwgsync.WaitGroupconstnumDigesters=20wg.Add(numDigesters)fori:=0;i既然每个摘要器都在处理相同的paths集合,为什么它不重复同一个文件两次? 最佳答案

go - 使用go从ftp服务器解压部分gz文件

我正在处理来自ftp服务器的大型gz文件,而没有使用go下载到磁盘。我可以通过this获取文件的任何部分ftp去图书馆我如何解压缩我获取的部分? 最佳答案 你不能从gzip文件的中间取出一些东西并解压它。gzip文件需要从头开始解压缩,除非文件中有明确的刷新点(通常没有),在这种情况下,可以从这些刷新点开始解压缩数据。 关于go-使用go从ftp服务器解压部分gz文件,我们在StackOverflow上找到一个类似的问题: https://stackoverf