草庐IT

Go 错误处理技术

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭3年前。Improvethisquestion我刚刚开始使用Go。我的代码开始有很多这样的东西:iferr!=nil{//handleerr}或者这个iferr:=rows.Scan(&some_column);err!=nil{//handleerr}在Go中是否有一些好的习惯用法/策略/最佳实践来检查和处理错误?编辑以澄清:我并不是在发牢骚或建议Go团队想出更好的东西。我在问我是否做对了,或者我是否错过了社区提出的一些技术。谢谢大

go - Go 中的延迟似乎会增加延迟

我在Go中使用互斥体进行同步。下面是代码func(c*MyStruct)Put(keystring,valueinterface{}){c.mu.Lock()deferc.mu.Unlock()val,found:=c.items[key]iffound{item:=val.Value.(*Item)item.Value=valueitem.Expiration=time.Now().Add(c.ttl).UnixNano()return}ele:=c.list.PushFront(&Item{key,value,expirationTime})c.items[key]=ele}当我对

go - 如何解析 "2019-09-19 04:03:01.770080087 +0000 UTC"时间戳

这个问题在这里已经有了答案:ParsingRFC-3339/ISO-8601date-timestringinGo(8个答案)关闭3年前。我将如何解析这个时间戳?“2019-09-1904:03:01.770080087+0000UTC”我尝试了以下方法:formatExample:=obj.CreatedOn//obj.CreatedOn="2019-09-1904:03:01.770080087+0000UTC"time,err:=time.Parse(formatExample,obj.CreatedOn)check(err)fmt.Println(time)但我得到的输出是:0

go - 为什么 Golang 需要接口(interface)?

在Golang中,我们使用带有接收方法的结构。到目前为止一切都很完美。但是,我不确定什么是接口(interface)。我们在结构体中定义方法,如果我们想在一个结构体上实现一个方法,我们无论如何都会在另一个结构体下再次编写它。这意味着接口(interface)似乎只是方法定义,只是在我们的页面上占用额外不需要的空间。有没有例子可以解释为什么我需要一个接口(interface)? 最佳答案 接口(interface)是一个太大的话题,无法在这里给出全面深入的答案,但有些东西可以使它们的用途变得清晰。接口(interface)是一个工具。

go - 如何从 exec.StdoutPipe() 获得输出的颜色?

我希望能够无缝打印通过io.ReadCloser传递的未知(用户定义)命令的输出。bufio.NewScanner读取标准并正确打印文本,但是子进程打印的颜色未被记录并通过管道传递(或者我不知道如何访问它)。我尝试使用execErr:=syscall.Exec(binary,cmd.Args,os.Environ())但是因为这接管了go进程,所以我无法获得进程数组运行。//SpawnGroupspawnsagroupofprocessesfuncSpawnGroup(cmds[]*exec.Cmd){spawnWg:=&sync.WaitGroup{}spawnWg.Add(len(

Go:调用函数时如何使用命名参数?

如何在使用命名参数时调用函数?(如果不清楚什么是命名参数,这里有一个usingtheminPython的例子)我想做的事的例子:funcAdd(aint,bint)int{returna+b}funcmain(){c:=Add(a:1,b:3)returnc}但是,上面给出了错误:unexpected:,expectingcommaor)(指的是紧跟在'a'之后的':') 最佳答案 Go没有命名参数。我知道在Go中最接近命名参数的是使用结构作为输入。因此,对于您的示例,您可以这样做-typeInputstruct{AintBint}

go - 为什么这段Golang代码不行?

_,error:=connection.Read(buffer)buffer:=make([]byte,BUFFER_SIZE)splited:=strings.Split(string(buffer),"")switchsplited[0]{case"TEST":connection.Write([]byte("TESTCONNECTIONOK"))log.Printf("TESTCOMMAND")break;如果我在客户端写“TEST”,服务器不会输入case语句。但是如果我从客户端发送“TESTSOMETHING”,服务器将按预期输入它。这是go-lang的bug吗?

multithreading - Go语言中线程的同步

我想更多地了解线程同步在go中的工作原理。下面是我的程序的一个功能版本,它使用完成channel进行同步。packagemainimport(."fmt""runtime")funcGoroutine1(i_chanchanint,donechanbool){forx:=0;x但是,当我尝试在没有任何同步的情况下运行它时。使用等待语句并且没有channel来指定何时完成,因此没有同步。constMAX=1000000funcGoroutine1(i_chanchanint){forx:=0;x它会打印出错误的i值。如果你延长等待时间,比如说1秒,它就会完成并打印出正确的语句。我有点理解

node.js - 有人可以解释一下 GO lang 的架构吗,它比 Nodejs 更快吗?如果是的话,是什么让它更快

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion有人能解释一下GOlang的架构吗,它比Nodejs更快吗?如果是,是什么让它更快,Go是使用C/C++开发的,那么,与C/C++相比,GO在性能上是否胜过C/C++和Go之间的唯一区别是更多的功能使开发人员更容易使用GO编写代码吗?

go - "Github.com"go 包未显示在 Bitbucket 的远程存储库中

当我将我的go代码推送到我的远程bitbucket存储库时,我没有在github.com包文件夹中看到我的文件,而是看到了这个(这是我的bitbucket存储库的屏幕截图,我希望在那里找到我的go文件):我使用此命令将我的代码推送到我的远程存储库:gitadd.gitcommit-m"message"gitpush-uoriginmaster当我登录到我的Bitbucket帐户时,我希望在“drakecheckin/src/github.com/coopernurse”目录中看到我的go文件。但是我没有看到我的go文件,而是看到一个指向一堆字符+数字的箭头。