草庐IT

go-mocket

全部标签

recursion - 为什么 Go 计算斐波那契递归这么快?

这不是它的正确版本,我只是在玩围棋,但我对围棋计算斐波那契数列中第42个(实际上是43个)数的速度如此之快感到震惊。有人可以解释一下为什么计算得这么快吗?我试着将它与python进行比较(我知道它比其他语言慢)但是python花了>1分钟,我不得不打破递归。packagemainimport"fmt"funcfib(auint)uint{ifa 最佳答案 它的编译器不如C的编译器聪明或成熟(至少现在还没有),但Go在时间性能上仍然比Python更接近C(空间性能是另一回事,而不是你问的)。作为一种编译型语言而不是一种解释型语言,它在

go - 类型声明的位置

我很好奇这种类型的结构声明t:=Person{"girlie",12}仅当其类型在同一文件中声明时才有效。下面是我的文件。文件st.go,在里面输入def结构体,在mainfunc中使用packagestructstypepersonstruct{ageintnameint}文件practice.go,主要功能:packagemainimport("fmt""structs/dir")funcmain(){varsdir.Persons.Name="She"s.Age=12>>t:=Person{"girlie",12}fmt.Println(s.Name)fmt.Println(t.

go - 作为一个单元测试用例,应该为这样的函数编写什么。代码片段会有所帮助

funcHome(whttp.ResponseWriter,r*staticAuth.AuthenticatedRequest){t,err:=template.ParseFiles("index.html")//parsethehtmlfilehomepage.htmliferr!=nil{//ifthereisanerrorlog.Print("templateparsingerror:",err)//logit}err=t.Execute(w,nil)//executethetemplateandpassittheHomePageVarsstructtofillinthegaps

go - 当范围超过 JSON 数组时无法迭代所有索引

我正在创建一个独立的模拟服务器,将JSON文件作为集成测试的输入(请求和响应)。我只能满足第一个请求。//MockServices...typeMockServicesstruct{Requeststring`json:"request"`Responsestring`json:"response"`}funcmain(){r:=getMockServices()fori,s:=ranger{fori>=0{//fmt.Println(i)//fmt.Println(s.Request)http.HandleFunc(s.Request,func(whttp.ResponseWrite

go - 程序在第一个功能后取消

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion我的go代码有问题。我将尝试构建一个脚本来使用系统调用自动更新和安装。packagemainimport("fmt""os""os/exec""syscall")funcupdate(){binary,lookErr:=exec.LookPath("apt")iflookErr!=nil{panic(lookErr)}args:=[]string{"apt","update"}env:=os.En

go - 命令行标志和命令

我需要开始使用命令行工具,我有几个问题我们决定使用cobraforgohttps://github.com/spf13/cobra来自帮助:$cobrahelpCobraisaCLIlibraryforGothatempowersapplications.ThisapplicationisatooltogeneratetheneededfilestoquicklycreateaCobraapplication.Usage:cobra[command]AvailableCommands:addAddacommandtoaCobraApplicationhelpHelpaboutanyco

go - 不明显的死锁情况

您能解释一下为什么会出现这种僵局吗?packagemainimport("sync""fmt""runtime")funcmain(){m:=sync.RWMutex{}gofunc(){m.RLock()runtime.Gosched()m.RLock()m.RUnlock()m.RUnlock()}()runtime.Gosched()m.Lock()m.Unlock()fmt.Println("works")}我不太清楚为什么这种死锁总是经常发生。这会不会是调度器的一个怪癖? 最佳答案 来自RWMutex文档:Ifagorou

arrays - 如何在go中反转任意数组?

当然,你总是可以写一个for循环。但代码共享通常总是好的。那么有没有一种方法可以编写对任何数组进行排序的方法?另外,性能,所以我猜这排除了反射。sort.Reverse似乎不起作用。以下将不会编译:packagemainimport("fmt""sort")typeAstruct{Xint}funcmain(){x:=make([]A,0)x=append(x,A{1})x=append(x,A{2})sort.Reverse(sort.IntSlice(x))fmt.Println(x)} 最佳答案 []A不是一个intslice

go - 参数是接口(interface)列表{}

这个问题在这里已经有了答案:Passinginterface{}or[]interface{}inGolang(1个回答)关闭4年前。我正在尝试创建一个函数来打印出传递给它的列表的len,而不管列表的类型如何。我这样做的天真方式是:funcprintLength(lis[]interface{}){fmt.Printf("Length:%d",len(lis))}但是,当尝试通过funcmain(){strs:=[]string{"Hello,","World!"}printLength(strs)}它提示说cannotusestrs(type[]string)astype[]inte

go - 在 Go 中运行 Python 命令

我正在尝试以下代码:packagemainimport("fmt";"log";"os/exec")funcmain(){cmd:=exec.Command("/usr/bin/python3.5","-c","importeasyguiaseg;print('Helloworld');eg.msgbox(msg='Hithere');print('fromGolang')")out,err:=cmd.CombinedOutput()iferr!=nil{log.Fatal(err)}fmt.Printf(string(out))}我尝试先在终端上打印,然后显示一个gui消息框,然后再